头图

他山之石,可以攻玉

本周开发的一个小事件

来龙去脉

本周遇到了一个小问题, 苹果手机拍照上传图片会旋转90度,不是你拍好的照片旋转,而是在选择上传图片的时候,选择拍照然后再上传,这个时候图片就会被旋转90度。但是我检查了一下我的代码,我的代码未曾处理过这一段,那问题出在哪里呢? 我陷入了沉思,于是开始打开了百度,开始面向百度编程:

​ 所以这是苹果手机的问题, 但是为什么在苹果手机中没有出现这种旋转,上传到服务器在浏览器上看就出现了旋转呢,是不是这张图片携带了隐藏属性呢?

​ 然后我又搜了搜发现原因是:

我看到了这里有js,于是就想让前端的同学帮忙处理一下,又想到前端要跨浏览器也比较麻烦,所以我的想法是我这里获取图片的属性,获取隐藏属性旋转了多少度:

但是这又要引入了新的库,我陷入了两难,于是跟同事交流了一下,同事说能不能把这部分隐藏的数据给消除掉,也能实现我们的目标, 于是我就去Thumbnails这个里面去找看有没有去除隐藏属性的库,找了半天发现没有这样的方法,然后有点小绝望,于是再跟同事进行讨论,同事表示Thumbnails的压缩图片可以把这部分属性去掉,像下面这样:

      ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
        // outputQuality 可以去除图片的隐藏属性
      Thumbnails.of(new File("")).scale(1.0).outputQuality(1.0).toOutputStream(byteOutputStream);
      byte[] byteArray = byteOutputStream.toByteArray();
      // byteArray已经是去除隐藏属性的了
      // 旋转也其他操作可以基于这个新的byteArray来做
        

在一开始我是没想到问题会用这样的方式来解决,他山之石,可以攻玉。

参考资料


北冥有只鱼
147 声望36 粉丝