他山之石,可以攻玉
本周开发的一个小事件
来龙去脉
本周遇到了一个小问题, 苹果手机拍照上传图片会旋转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来做
在一开始我是没想到问题会用这样的方式来解决,他山之石,可以攻玉。
参考资料
- IOS上传图片旋转90度问题出现原因及解决方案 https://www.cnblogs.com/justd...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。