需要将照片统一打印出来,并且分辨率为350dpi,现在改换DPI没有问题,转换后分辨率也不变,但是文件大小确变了,如何保证大小不变??用的是GDI+方法,还有其他方法吗???procedure TForm1.Button7Click(Sender: TObject);
var
fBitmap: TGPBitmap;
tmp: TGpBitmap;
g: TGpGraphics;
Clsid: TGUID;
dip : double;
begin
dip :=350.0 ; ////需要转换的DPI
fBitmap := TGPBitmap.Create('e:\bbc.jpg'); tmp := TGpBitmap.Create(fBitmap.GetWidth, fBitmap.GetHeight, fBitmap.GetPixelFormat);
g := TGpGraphics.Create(tmp);
g.DrawImage(fBitmap, 0, 0, fBitmap.GetWidth, fBitmap.GetHeight);
g.Free;
fBitmap.Free;
tmp.SetResolution(dip,dip); // 就是dpi值了
if GetEncoderClsid('image/jpeg', Clsid) <> -1 then
tmp.Save('e:\cc.jpg', Clsid);
tmp.Free;end;
var
fBitmap: TGPBitmap;
tmp: TGpBitmap;
g: TGpGraphics;
Clsid: TGUID;
dip : double;
begin
dip :=350.0 ; ////需要转换的DPI
fBitmap := TGPBitmap.Create('e:\bbc.jpg'); tmp := TGpBitmap.Create(fBitmap.GetWidth, fBitmap.GetHeight, fBitmap.GetPixelFormat);
g := TGpGraphics.Create(tmp);
g.DrawImage(fBitmap, 0, 0, fBitmap.GetWidth, fBitmap.GetHeight);
g.Free;
fBitmap.Free;
tmp.SetResolution(dip,dip); // 就是dpi值了
if GetEncoderClsid('image/jpeg', Clsid) <> -1 then
tmp.Save('e:\cc.jpg', Clsid);
tmp.Free;end;
解决方案 »
- case 语句问题
- Delphi下获取CPU相关信息
- 请教一个添加记录的问题?
- 请问怎样获得一个已知IP地址的远程SQL服务器实例名?
- 请问如何打开.dat格式的数据文件
- mysql 查询问题急 四小时之内结帖
- 急需监视网络数据包的程序源代码,高手请进~~
- 怎么样才能把一个integer类型的变量转化为 smallint 类型的变量
- 大家去看看这个贴吧,教育深啊!!http://www.csdn.net/expert/topic/841/841311.xml?temp=.6806452
- 如何配置Internet上的机器连上内网的游戏服务器?需要装什么软件?多谢!
- Inno setup 的快捷方式
- ◆delphi调用webservice 问题◆
另外,其实使用临时位图是没有必要的。直接对fbitmap实行setResolution然后再保存为e:\cc.jpg就好了。