MFC中使用CxImage库对图片进行裁剪诡异问题

待续_1006 2017-10-27 04:37:31
加精
假如给一张jpg的图片使用CxImage类中的Crop方法进行首次裁剪操作【只进行边缘裁剪】,在DPI不变的情况下,图片必然会增加2--3倍大小

如果接下来再对此图片进行裁剪操作,无论裁剪范围大与小,图片所占空间都会相应比例的缩小


如果对PNG图片进行同样操作就不会出现上述的情况,难道是CxImage底层对jpg图片做过什么转换处理?????

感觉这么诡异呢,大神解答下
...全文
4604 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙泉月夕 2017-11-05
  • 打赏
  • 举报
回复
十分不错 值得学习
yanshi5049 2017-11-04
  • 打赏
  • 举报
回复
不了解,看一看
elgoog3 2017-11-03
  • 打赏
  • 举报
回复
不太明白,学习
待续_1006 2017-10-30
  • 打赏
  • 举报
回复
引用 2 楼 worldy 的回复:
JPG是有损压缩,加载JPG后-->BMP(内存)--->Crop--->BMP小--->JPG,这时你的压缩质量参数使用的是CxImage默认参数,和原图可能不一样


m_image.Load(sFileName);
m_image.Crop( m_cCropRect, &cDestImage );//切割
BYTE bOld = m_image.GetJpegQuality();//原图压缩比
//保持源目地图片DPI一致
cDestImage.SetXDPI( m_image.GetXDPI());
cDestImage.SetYDPI( m_image.GetYDPI());
//保存图片
cDestImage.Save(m_sImagePath+strSelectPicName, m_image.GetType());
//目地图片压缩比
BYTE bNew = cDestImage.GetJpegQuality();

本以为上段代码中CxImage库对JPG图片的加载和裁剪后的压缩比不同导致的第一次裁剪图片后,图片你按一定倍率增加,可是通过代码调试发现裁剪前后压缩比都是90啊。。。。。

待续_1006 2017-10-30
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
CxImage是不是开源的?
这个有关系吗?这东东就是一个类库吧
待续_1006 2017-10-30
  • 打赏
  • 举报
回复
引用 6 楼 worldy 的回复:
你把原图不要裁剪,是CxImage的机制另存看看,比较文件前后大小
下面所说的仅仅是对JPG图片操作,PNG没问题 m_image.load(JPG图片); ////什么都不做,直接保存,图片还是会增加1.5倍,问题应该在CxImage中的Save操作中,但是压缩比没变,DPI没变,什么属性还能使JPG图片变大呢? m_image.Save(m_sImagePath+strSelectPicName, m_image.GetType());
worldy 2017-10-30
  • 打赏
  • 举报
回复
你把原图不要裁剪,是CxImage的机制另存看看,比较文件前后大小
schlafenhamster 2017-10-28
  • 打赏
  • 举报
回复
CxImage 使用 gdi+ , 不如 直接 用 gdi+
worldy 2017-10-27
  • 打赏
  • 举报
回复
JPG是有损压缩,加载JPG后-->BMP(内存)--->Crop--->BMP小--->JPG,这时你的压缩质量参数使用的是CxImage默认参数,和原图可能不一样
赵4老师 2017-10-27
  • 打赏
  • 举报
回复
CxImage是不是开源的?

19,468

社区成员

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

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