2011-06-13 50 views
2

我有一个应用程序将产品照片并将其保存回服务器。现在发送大文件和转换格式等是很昂贵的。所以我想知道如何检查先前上传的照片是否相同?如果它们具有相同的分辨率,它们具有相同的字节数是多少?还有什么是通过HTTP上传照片最有效的方式?应该是压缩等谢谢具有相同字节数的两张照片(大)的赔率是多少?

+0

你是什么意思的“相同”?你可以有两张完全不同位图案的图片,当它们呈现给人类时(特别是如果它是一种压缩格式的话)时,它们看起来完全一样。 – 2011-06-13 04:41:19

+0

@abelenky OP从未投过票。也许他/她不知道SO的工作原理 – 2011-06-13 13:02:18

回答

5

而不是依赖于两个图像的字节大小,你可以创建这些图像MD5 hashes(或其他散列算法)并比较散列值。哈希碰撞比图像大小比较要少得多。

如果图像可以被显着压缩,那么您只应该打扰压缩。否则,你真的只是在客户端和服务器上浪费CPU。

0

'相同尺寸'对于相同的图片来说是必要的,但不是充分的要求。你必须真正看看字节的内容。 md5sum是验证平等的指纹选项。

正如Paul Sasi所提到的,压缩不会有太大帮助,因为大多数使用的文件格式(PNG,JPG等)已经过压缩和优化,尽可能少使用内存。

还有另一个选择来限制上传大小:在大多数情况下,客户端将图像上传格式的服务器分辨率过高(例如,他们直接从数码相机中获取文件,这意味着不能打印在线消费)。这通常会以大于2MB的图片结束。一个很大的优化就是在客户端调整图片的大小(比如4MB到200KB)。不幸的是我忘记了图书馆的名字(当我再次想到时,我会添加它)。

相关问题