算法用于确定最佳图像保存格式

3
我有一张图片,它可能是照片或屏幕截图。我想确保这些图像以适当的格式保存。我在谈论jpeg和png。

如何确定将图像保存为.jpeg更好,因为它是/包含了照片?此外,如果图像包含使用的alpha通道,则明显应该使用png。

最简单的方法是用不同的图像格式将图像保存两次到内存流中,并比较相应数据大小。显然,这需要很多资源,并且在我看来不是解决问题的方法。

有人有建议吗?


这张图片来自哪里?它以什么格式存储,即你正在尝试编写的方法的输入类型是什么? - Darin Dimitrov
既不是照片也不是屏幕截图会包含透明度。 - Mark Ransom
@Mark 我所说的截图可能包含 alpha 通道。 - nikeee
如果这是一个包含照片的图像查看器的截图,该怎么办? - Nick Johnson
@MarkRansom,使用DCT存储alpha通道也是合适的[透明膜掩模...]。 - user877329
1个回答

4

您可以寻找连续运行的相同颜色的出现,因为这在照片中非常不常见。当然,在现代界面中,渐变效果使得这种情况在屏幕截图中更不常见。通常情况下仍然存在纯色区域(尤其是灰色或白色),因此如果您想要快速判断,这是一个合理的启发式方法。您可能需要排除最大强度白色或最小强度黑色,因为曝光过度或曝光不足的照片可能会包含大面积的这些颜色。


有没有一种常用的算法可以这样分析图像? - nikeee
1
@nikeee13,我不熟悉此方面的标准算法,但沿着行采样并计算连续相同像素的数量可能已足够。如果你超过了一个阈值,可以将其标记为非照片。你可以使用更高级的测量方法,并计算一些统计数据,但即使只是找到五个连续像素也足以表明它不是照片(即使忽略被摄物体表面的光照梯度,CCD噪声通常会引起至少1个亮度单位的抖动)。 - Dan Bryant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接