如何对图片进行无损压缩

Mdesigner 2011-10-14 10:47:09
用CxImage对jpg,wmf,emf等格式的图片压缩后,会出现严重失真,模糊成一片了(一般把200M的图片压缩成1、2M)
有没有比较好的压缩方式
...全文
719 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
simen-wang 2012-02-10
  • 打赏
  • 举报
回复
我也搞了很久,没法解决,估摸着要不要用Direcx或者OpenGL去解决了
Mdesigner 2011-10-20
  • 打赏
  • 举报
回复
有没有哪位大小有源码的。。。
Mdesigner 2011-10-17
  • 打赏
  • 举报
回复
有代码没~~~[Quote=引用 15 楼 cczlp 的回复:]
JPG2000可以无损压缩
[/Quote]
Mdesigner 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lambochan 的回复:]
引用 8 楼 mdesigner 的回复:

压缩的不用太小,大小大约是屏幕大小即可,不要超过3、4、5、6M最好了
就像把一副图片缩小后的样子就行
我现在压缩后,直接就是一坨黑了,太模糊不清
引用 6 楼 lambochan 的回复:
图太大的话,一下子压缩到极小尺寸的话,就可能什么都看不清。。

其实可以分步压缩:
如果你的小图不及原图的1/4大小,那么可以先把宽、高等比缩小……
[/Quote]试过了,貌似失真很严重,应该是缩小的比例太大了 ,我把图片缩小了1万倍
zhouzhipen 2011-10-15
  • 打赏
  • 举报
回复
你这不是压缩,是图片缩小,只要找一种合适的采样算法就行了,双线性插值、三次立方插值...有很现在非常成熟的算法,在速度和效果上各有不同的表现(速度快的当然效果不好)。

junkli 2011-10-15
  • 打赏
  • 举报
回复
什么图片这么大200M
DeDeWo 2011-10-15
  • 打赏
  • 举报
回复
学习……
lambochan 2011-10-14
  • 打赏
  • 举报
回复
图太大的话,一下子压缩到极小尺寸的话,就可能什么都看不清。。

其实可以分步压缩:
如果你的小图不及原图的1/4大小,那么可以先把宽、高等比缩小一半,还不够1/4的话,再缩小一半。。。
如此类推,最后一步就直接缩小成你的尺寸,类似于金字塔式的mipmap。
lebao82 2011-10-14
  • 打赏
  • 举报
回复
关注一下
e_feeling 2011-10-14
  • 打赏
  • 举报
回复
学习学习......
ndy_w 2011-10-14
  • 打赏
  • 举报
回复
256色用gif。
pcx也是无损压缩。
Mdesigner 2011-10-14
  • 打赏
  • 举报
回复
我是想用大图片做个缩略图,但是我那种方式的压缩后的图片,成了一片模糊了,原来的大致样子也看不出来了,有没有把大图片处理成缩略图比较好的方法
[Quote=引用 1 楼 mdesigner 的回复:]
CxImage image,smallImg;
image.Load(strOldPicPath);
image.Resample(cx,cy,1,&smallImg);
smallImg.Save(strNewPicPath,FindType(::GetFileNameExt(strNewPicPath)));
这种方式压缩出来的图片严重失真,有没有不失真的方法
[/Quote]
QQ515311445 2011-10-14
  • 打赏
  • 举报
回复
压缩太大了,肯定会失真呀
Mdesigner 2011-10-14
  • 打赏
  • 举报
回复
CxImage image,smallImg;
image.Load(strOldPicPath);
image.Resample(cx,cy,1,&smallImg);
smallImg.Save(strNewPicPath,FindType(::GetFileNameExt(strNewPicPath)));
这种方式压缩出来的图片严重失真,有没有不失真的方法
lambochan 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mdesigner 的回复:]

压缩的不用太小,大小大约是屏幕大小即可,不要超过3、4、5、6M最好了
就像把一副图片缩小后的样子就行
我现在压缩后,直接就是一坨黑了,太模糊不清
引用 6 楼 lambochan 的回复:
图太大的话,一下子压缩到极小尺寸的话,就可能什么都看不清。。

其实可以分步压缩:
如果你的小图不及原图的1/4大小,那么可以先把宽、高等比缩小一半,还不够1/4的话,再缩小一半。。。
如此……
[/Quote]

貌似你的代码是用了“邻插”,由巨图缩到小图,那肯定什么都看不清。。

改为其它插值方式吧:
image.Resample(cx,cy,2 or 0,&smallImg);


不过最好的办法是先做金字塔式缩小,最后才缩成你目标图像的大小。。



cczlp 2011-10-14
  • 打赏
  • 举报
回复
JPG2000可以无损压缩
alexander_david 2011-10-14
  • 打赏
  • 举报
回复
alexander_david 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mdesigner 的回复:]
大虾,有源码没Quote=引用 10 楼 superarhow 的回复:]
PNG最合适了
[/Quote]
[/Quote]

自己去百度查!
Mdesigner 2011-10-14
  • 打赏
  • 举报
回复
大虾,有源码没Quote=引用 10 楼 superarhow 的回复:]
PNG最合适了
[/Quote]
mhm0902 2011-10-14
  • 打赏
  • 举报
回复
学习一下,金字塔挺好的。
加载更多回复(4)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧