2

也许其他人也遇到过这个问题:正如标题所说,当从设备上传屏幕截图到我们的服务器时,图像质量下降非常高。您可以在以下链接中看到一个示例 http://cdn.voicebo.com/7507-05e6a7b3bf91d96b2d08da649c2ef590.jpg

这张截图是在 Nexus 4 上拍摄的,但同样的事情也发生在 Galaxy S2、S3 和 Note 2 上。不幸的是,我们现在没有更多的手机可以对此进行测试,但考虑到以下型号的受欢迎程度,这会影响到我们的大量用户。

我已经搜索了很长一段时间的答案或可能发生这种情况的原因,发现以下链接并不是我真正想要的,但包含一些信息 http://www.google.rs/url?sa=t&rct=j&q =&esrc=s&source=web&cd=1&cad=rja&ved=0CCYQFjAA&url=http%3A%2F%2Fandroidforums.com%2Fsamsung-galaxy-s3%2F580114-screenshot-glitch.html&ei=1dKdUbPNA8nBO7G9gPgE&usg=AFQjCNECq7UNMp142pU8WLMlLwZV

我还得出结论,屏幕截图图像保存为 png 文件,而来自相机的图像保存为 jpeg(我认为这对于所有 ROMS 都是相同的,但可能是错误的)所以这也可能是问题所在。我不明白为什么这会是一个问题,因为据我了解,当您从任何支持的格式读取图像文件时,您会获得该图像的原始数据字节,因此如果原始字节,输入格式不应在输出压缩中发挥作用被阅读没有错误。
图像压缩中的相关代码部分仅此而已,但如果需要更多信息,我可以添加更多:

bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);

我要问的问题是:有其他人遇到过这个问题吗?您是如何解决的?我应该如何压缩 png 图像(使用什么设置)以在合理的文件大小下获得最佳结果?

奖励:我目前正在尝试一种方法来检测图像的文件格式,但如果有人用它来解决类似的问题,请在回答中提及。编辑:如何从图库中获取图像的图像格式是我现在用来获取图像格式的部分,但这实际上并不能回答问题。感谢所有在那里进行有益讨论的人。

4

1 回答 1

2

现在您已经提到了options.inSampleSize设置,您的问题似乎极有可能是由以下原因引起的:设置options.inSampleSize = 4告诉编码器丢弃像素(显然字面意思;正确的重采样看起来比您的示例更好),这正是您所看到的.

您需要做出一些决定什么应该缩小,什么不应该 - 你在评论中说这个设置应该由输入边界决定,所以听起来你已经在这样做了,也许你需要一些调试那里。

我要重申,将 PNG 更改为 JPEG 可能不是最佳选择,除非您的屏幕截图通常包含照片内容。您可能知道,PNG 在压缩照片内容方面非常差,但相反,JPEG 在保持计算机/设备屏幕上常见的各种图像的质量方面非常差。在这种情况下,PNG 通常可以生成比可接受的 JPEG 图像更小的文件。

于 2013-05-23T12:38:30.347 回答