日期:2014-05-20  浏览次数:20692 次

两张不同大小图片重新生成小图的问题
  今有两张图片A,B,由两部相机拍摄而得。由于客户需要保存大量的图片信息,为了节省空间。程序上传图片后会通过Graphics.drawImage方法进行图片重绘生成规定格式的图片640 * 480 与 96 * 72 两版图片。

图片的信息情况如下(均为鼠标右键,图片属性中的详细信息所得)

A图片信息 
尺寸: 4608 * 3456
(水平/垂直)分辨率: 72 dpi
位深度:  24
文件大小: 5.65M(5,925,693字节)

B图片信息
尺寸: 2048 * 1536
(水平/垂直)分辨率: 72 dpi
位深度:  24
文件大小: 1.37M(1,446,764 字节)

使用Graphics.drawImage方法获得了两套缩略图640 * 480 和 96 * 72 文件
其中
A图生成的 640 * 480 版本大小为 46.5KB
B图生成的 640 * 480 版本大小为 65.3KB

A图生成的 96 * 72 版本大小为 1.61KB
B图生成的 96 * 72 版本大小为 2.00KB

请问各位:为什么 B 图片生成的缩略图反而比 A 图片 生成的图片还要大呢?

由于客户每天会有大量的图片进行处理。现在已经达到T级存储了。所以对文件要求比较苛刻。所以到这里来,看看有没有什么好的解决办法没有。谢谢各位了!祝大家新的一年里薪水翻翻!
------解决方案--------------------
和原始图片比例有关系吗?可以看看那个源码。推荐下
------解决方案--------------------
应该是源码的编写方式不同
------解决方案--------------------
与图片颜色有关系。不同图片肯定不一样。最大相关的是灰度吧。
------解决方案--------------------
本来就没法控制。只有个完全不压缩时的大小的最大值,压成多少是没法预估的,嫌大了只能通过降低色深和降低图像质量来提高压缩比(最终大小仍是无法预估)
------解决方案--------------------
BMP格式肯定缩小肯定不会变化
肯定但是jpg等等一些格式那就不一定了,算法不同。
你自己可以试验一下,将一个jpg的白图,和一个别的图片同等大小的jpg,图片占用内存肯定不一样。
BMP图像就不一样了,他是每个点占多少个像素(具体看位图深度)
------解决方案--------------------
图片缩小后的大小,和图片内容有很大关系,内容越丰富,压缩后越大。LZ可以试验一下不同的图片看看。
------解决方案--------------------
如果你保存的格式是JPG/JPEG格式
很正常会出现这种情况,一副图片文件的大小取决以下几个因素
1.像素分辨率
2.图像格式,jpg与jpeg都会有差别,原因是jpeg是基于jpeg2000的小波变换压缩算法
3.图像所包含的信息量,信息量越大,压缩率越低。
如果我猜的没错,A,B图像肯定是B中包含了更多信息量。
大家都散了吧!
------解决方案--------------------
你用的啥子图片格式?PNG、JPG、BMP?
有些图片是经过有损压缩的,相同尺寸由于算法造成了实际的数据量大小不一样,比如JPG。
------解决方案--------------------
什么格式的压缩完就是有区别的
------解决方案--------------------
使用ImageMagick吧,