and*_*per 6 android jpeg image image-compression
我需要旋转相机拍摄的图像,以便它们始终具有正常方向.
为此,我使用下一个代码(使用此帖子来获取图像方向)
//<= get the angle of the image , and decode the image from the file
final Matrix matrix = new Matrix();
//<= prepare the matrix based on the EXIF data (based on https://gist.github.com/9re/1990019 )
final Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(),matrix,false);
bitmap.recycle();
fileOutputStream = new FileOutputStream(tempFilePath);
rotatedBitmap.compress(CompressFormat.JPEG, 100, fileOutputStream);
rotatedBitmap.recycle();
Run Code Online (Sandbox Code Playgroud)
这里压缩率(AKA"质量"参数)是100.
代码工作正常,但结果比原来大,大得多.
原始文件大约为600-700 KB,而生成的文件大约为3MB ...
即使输入文件和输出文件都具有相同的格式(JPEG),这也是如此.
相机设置为"超精细"质量.不确定它意味着什么,但我认为这与压缩率有关.
我试图将"filter"参数设置为false或true.两者都导致了大文件.
即使没有旋转本身(只是解码和编码),我也会获得更大的文件大小......
只有当我将压缩比设置为大约85时,我才会得到类似的文件大小,但我想知道与原始文件相比质量会受到什么影响.
它为什么会发生?
有没有办法获得完全相同的输入文件的大小和质量?
使用与原始文件相同的压缩率会使它发生吗?甚至可以获得原始文件的压缩率?
拥有100%压缩率意味着什么?
编辑:我发现这个链接谈论JPEG文件的旋转而不会丢失质量和文件大小,但在Android上是否有解决方案?
这是另一个链接,说它是可能的,但我找不到任何允许旋转jpeg文件而不会失去其质量的库
use*_*532 -2
100% 质量率可能是比最初保存文件的设置更高的质量设置。这会导致尺寸更大但(几乎)相同的图像。
\n\n我不确定如何获得完全相同的尺寸,也许只需将质量设置为 85% 就可以了(快速和肮脏)。
\n\n但是,如果您只想以 90\xc2\xb0 步旋转图片,则可以仅编辑 JPEG 元数据,而无需接触像素数据本身。
\n\n不确定它在 android 中是如何完成的,但这就是它的工作原理。
\n| 归档时间: |
|
| 查看次数: |
7234 次 |
| 最近记录: |