裁减技术讨论,希望高手进入,来者有分数!
假设一幅图像大于屏幕区域1024x768,实际有可能是2000*1800的BMP图像.
如果采用截屏,通过CDC画出屏幕区域(即在CDC上画BMP原始象素),通过api截取指定区域,假设截取的CRect(100,100,500,700).通过胶片打印机,会将图放大2倍,造成象素失真.此方法不可取.
如果采用一种方法将客户区域CRclient()与原始图像区域CRoriginal映射,可得到原始图像对应的裁减区域.保存裁减区域所对应的象素.即可得到裁减图像.
有没有这方面的资料?对裁减后的图像,怎样进行边缘处理?欢迎讨论!
问题点数:0、回复次数:4Top
1 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2005-06-03 13:25:50 得分 0
问题怪怪的
你可以建立一个memdc把大图放在里面
然后把它拉伸到一个小窗口上显示,在这个小窗口上选择区域,然后映射会memdc当中得到实际对应的位图象素区域,在这里截取打印就可以了。Top
2 楼wqs6(竹山)回复于 2005-06-04 19:35:09 得分 0
做一个映射,在显示的时候采用缩小比例,输出的时候恢复正常Top
3 楼Summer006(脸都丢尽了!闭关修练。。。。)回复于 2005-06-05 08:45:58 得分 0
同意楼上的。。
裁剪后边缘处理??什么意思?Top
4 楼icansaymyabc(学习与进步)回复于 2005-06-05 12:20:14 得分 0
你的问题出在打印环节上,而不在剪裁环节上,剪裁采用截屏就可以了。
原始图像为何能正确打印? 因为它包含了分辨率信息,也就是 像素/每英寸的信息。
你产生的新图像 分辨率是缺省的 72ppi。
假如原始图像分辨率是 144ppi的话,用72ppi去打印尺寸就大了一倍。
假如原始图像分辨率是 200ppi的话,用72ppi去打印尺寸就是2.7倍。
所以有两种解决方案。
1 是根据新旧分辨率的比值缩放新图像,使得其像素数和新分辨率和尺寸符合。这样会丢失图像细节
2 设置新图象的分辨率等于旧分辨率。这个我从未做过,不知道怎么做。我猜想很简单,但是要花精力去找到方法。
Top




