两张不同大小图片重新生成小图的问题 图片存储 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应用里对图片的宽高处理如下: sourceWidth 就是原始的宽度 destinationWidth 就是目标的宽度。如果图片是普通的横版大小,就会控制其宽度为640,如果是竖版的图片。则控制其高度为640。但这两张图片都是横版的图片。缩放后都是640*480 int sourceWidth = image.getWidth(); int sourceHeight = image.getHeight(); if ((float) sourceWidth / destinationWidth > (float) sourceHeight / destinationHeight) { destinationHeight = (int) (destinationWidth * ((float) sourceHeight / sourceWidth)); } else { destinationWidth = (int) (destinationHeight * ((float) sourceWidth / sourceHeight)); }源码编写方式不同是指哪个源码不同?两张图片走的是同一个方法。 我一直在猜测:会不会是大图与小图在压缩时候。像素越高的压缩比越大造成的这种情况呢!我测试了一张2468*3472分辨率,文件大小约800KB左右的图片,其生成的缩略文件比上面两张图片生成的都要大一些。并且这张图片就是普通A4纸印刷的单证信息打印出来的图片。不过其分辨率已经达到了300dpi。想是跟这个数值有关系的了。 BMP格式肯定缩小肯定不会变化肯定但是jpg等等一些格式那就不一定了,算法不同。你自己可以试验一下,将一个jpg的白图,和一个别的图片同等大小的jpg,图片占用内存肯定不一样。BMP图像就不一样了,他是每个点占多少个像素(具体看位图深度) 如果你保存的格式是JPG/JPEG格式很正常会出现这种情况,一副图片文件的大小取决以下几个因素1.像素分辨率2.图像格式,jpg与jpeg都会有差别,原因是jpeg是基于jpeg2000的小波变换压缩算法3.图像所包含的信息量,信息量越大,压缩率越低。如果我猜的没错,A,B图像肯定是B中包含了更多信息量。大家都散了吧! 你用的啥子图片格式?PNG、JPG、BMP?有些图片是经过有损压缩的,相同尺寸由于算法造成了实际的数据量大小不一样,比如JPG。 我写得的第一个程序,大家顶一下哦,http://jcloud.csdn.net/m/opus/opus/opus_zone?id=2296&project_id=612&product_type=10 觉得应该是B的不同色彩的种类比B要多,图片格式中一部分结构叫做调色板,里面记录了每张图片的不同色彩的色度(R,G,B),虽然压缩前,A图比B图要大,但是压缩后,因为A的不同色彩数目比B小,所以A图的调色板结构占得空间就比B的调色板空间要小。而图片在展示是,图片的数据格式部分记录的是该点颜色在调色板中的索引,当图片显示在屏幕上时,用对应的索引去调色板里找对应的(R,G,B)显示出来。 不知道你“解决”这个问题是指什么,如果要把图片大小变小,那可以采用一些图像增强的办法,用滤波器去掉图片中占比比较小的色彩种类,使图片中的色彩种类少一些,同时会牺牲一些图片的细节。比如,如果某色彩(R,G,B)只在图片中出现了1次,你就可以用最接近的其他(R,G,B)组合替换该组合,从而总体上减小图片调色板结构的大小。 look http://www.didiling.com 最简单的java打印 入门新手求助,二维数组查找 String问题 STRUTS 表单跨页 SESSION 问题 判断输入的是否是正整数? 装了j2sdk1.4.0以后为什么找不到javax下的servlet类? 各位高手,怎样在java中得到上层目录的上层目录,谢谢!!! jndi查找不成功??各位帮忙 寻找包包...(请各位关注,谢~) javamail附件名称的问题 新手,if问题 java报错求指导
如果图片是普通的横版大小,就会控制其宽度为640,如果是竖版的图片。则控制其高度为640。但这两张图片都是横版的图片。缩放后都是640*480 int sourceWidth = image.getWidth();
int sourceHeight = image.getHeight();
if ((float) sourceWidth / destinationWidth > (float) sourceHeight
/ destinationHeight) {
destinationHeight = (int) (destinationWidth * ((float) sourceHeight / sourceWidth));
} else {
destinationWidth = (int) (destinationHeight * ((float) sourceWidth / sourceHeight)); }
源码编写方式不同是指哪个源码不同?两张图片走的是同一个方法。
肯定但是jpg等等一些格式那就不一定了,算法不同。
你自己可以试验一下,将一个jpg的白图,和一个别的图片同等大小的jpg,图片占用内存肯定不一样。
BMP图像就不一样了,他是每个点占多少个像素(具体看位图深度)
很正常会出现这种情况,一副图片文件的大小取决以下几个因素
1.像素分辨率
2.图像格式,jpg与jpeg都会有差别,原因是jpeg是基于jpeg2000的小波变换压缩算法
3.图像所包含的信息量,信息量越大,压缩率越低。
如果我猜的没错,A,B图像肯定是B中包含了更多信息量。
大家都散了吧!
有些图片是经过有损压缩的,相同尺寸由于算法造成了实际的数据量大小不一样,比如JPG。
而图片在展示是,图片的数据格式部分记录的是该点颜色在调色板中的索引,当图片显示在屏幕上时,用对应的索引去调色板里找对应的(R,G,B)显示出来。
http://www.didiling.com