多处不能求解,请高手解决JPG 自动放大问题.. 现在的情况是在用Qreport或FastReport的打印图片的时候,如果图片超过200DPI(以下没试),如果按1:1打印的话,在设计或打印时总是自己放大..如:我现在有个图片是5.26*17.71的,比A4小,但在打印或设计的时候如果按1:1的方式打印的话,就会超出设计用的A4界面..不知道为什么...我是刚注册的,没有什么分给,但我希望有哪位高手指点一下..(如果缩小成96DPI就没有问题了.但打印效果就不好了..) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对了.图片在word,excel中显示的都很正常...都比A4小..这好象不能发图片..如果图片小点的话就不会出现这样的问题..就100分求教了.. 这个应该是打印机的DPI设置问题,默认是72,你把200DPI的放进去自然就大了很多你要用DEVMODE结构重新定义打印机的DPI为200或更大或者将图片尺寸动态缩小 单位不一样,DPI简单可以解释为单位英寸区域需要的像素数量,相当于像素<-->厘米的转换常量windows使用像素为单位,默认为72DPI,换算成A4纸大小差不多就是595*842像素这样你的图片对windows画布来说就太大了 FastReport组件没用过,一般的处理办法是用API来返回打印机的HDC画布并设置DPI,然后把数据画在HDC上面 还是找不到好的方法..但现在有一点,RAVE如果是BMP的话没有问题,,但RAVE没有JPG,,,听说有个插件,,倒时候找找...为什么wrod和excel会没有这样的事情,我想会有一个比较好的解决方法的.. 为什么没有人回答了呀..?道理SonicX(SonicX)说的挺明白了..,就是还没有好的解决方法,有人再指点一下吧..谢谢了.. 那就把Jpg文件转换为bmp文件转换函数//bmp转化为JPGBMPToJPG(BmpFilepath,BmpFileName,SizeNameJpgFilepath,SizeCodejpgFileName,jpgFileName:string;Flag:boolean=false);var Jpeg : TJPEGImage; Bmp : TBitmap; var Create:boolean;begintry if DirectoryExists(SizeNameJpgFilepath)=false then begin if ForceDirectories(SizeNameJpgFilepath)=false then begin SizeNameJpgFilepath:=SizeCodejpgFileName; ForceDirectories(SizeNameJpgFilepath); end; end; Bmp := TBitmap.Create; try Bmp.LoadFromFile(BmpFilepath+BmpFileName); Jpeg := TJPEGImage.Create; try Jpeg.Assign(Bmp); Jpeg.Compress; //保存图片 Jpeg.SaveToFile(SizeNameJpgFilepath+jpgFileName); finally Jpeg.Free; end; finally Bmp.Free; end;exceptend; if Flag=true then DeleteFile(BmpFilepath+BmpFileName);end;//JPG文件转换为BMP文件,其中省略的部分只要将bmp文件创建与操作同JPG换过来,同上面的函数//差不多,只是写出来的那部分不一样JPGToBMP(BmpFilepath,BmpFileName,SizeNameJpgFilepath,SizeCodejpgFileName,jpgFileName:string;Flag:boolean=false);var Jpeg : TJPEGImage; Bmp : TBitmap; var Create:boolean;begintry ... try ... try .... Bmp.Assign(Jpeg); Bmp.Dormant; Bmp.FreeImage; //保存图片或者绘制图片 .... finally end; finally ...... end;exceptend; .......end; BMP转成JPG,JPG转成BMP有什么用呀?这样就能解决这个问题吗?还有rave 报表中,编辑是正常的,但打印就不正常了.用rave来做也是不行的..还是在fastreport中做手脚吧. 可能是fastreport之类的VCL用的人少吧... 这可是你自己说的:“但现在有一点,RAVE如果是BMP的话没有问题”根据你这个说法,可以让你一直用bmp文件,Jpg格式的全部转化为bmp GDI+转换图片为标准的72DPI,那就Ok吧? 请问哪里还可以买到罗小平的《delphi精要》吗?或者哪位仁兄不需要了转让一本。谢谢! SQL服务器互访 GetMem,StrPas是什么函数? 那位大侠有InstallShieldExpress354的password /Serial ??? 鼠标拖动的问题!? 请问如何有效扫描到缩放后的image中每个像素颜色? 如何获得当前内存中运行的dll文件? 谁有类似美萍网管大师的程序的源代码啊? copyfile如何用?请举个例子 如何成为编程高手 请问这样的校验码是怎样算出来的? 一个格式转换的问T,,,,高手请进。。。。。。。
你要用DEVMODE结构重新定义打印机的DPI为200或更大
或者将图片尺寸动态缩小
windows使用像素为单位,默认为72DPI,换算成A4纸大小差不多就是595*842像素
这样你的图片对windows画布来说就太大了
//bmp转化为JPG
BMPToJPG(BmpFilepath,BmpFileName,SizeNameJpgFilepath,SizeCodejpgFileName,jpgFileName:string;Flag:boolean=false);
var
Jpeg : TJPEGImage;
Bmp : TBitmap;
var
Create:boolean;
begin
try
if DirectoryExists(SizeNameJpgFilepath)=false then
begin
if ForceDirectories(SizeNameJpgFilepath)=false then
begin
SizeNameJpgFilepath:=SizeCodejpgFileName;
ForceDirectories(SizeNameJpgFilepath);
end;
end;
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile(BmpFilepath+BmpFileName);
Jpeg := TJPEGImage.Create;
try
Jpeg.Assign(Bmp);
Jpeg.Compress;
//保存图片
Jpeg.SaveToFile(SizeNameJpgFilepath+jpgFileName);
finally
Jpeg.Free;
end;
finally
Bmp.Free;
end;
except
end;
if Flag=true then
DeleteFile(BmpFilepath+BmpFileName);
end;//JPG文件转换为BMP文件,其中省略的部分只要将bmp文件创建与操作同JPG换过来,同上面的函数
//差不多,只是写出来的那部分不一样
JPGToBMP(BmpFilepath,BmpFileName,SizeNameJpgFilepath,SizeCodejpgFileName,jpgFileName:string;Flag:boolean=false);
var
Jpeg : TJPEGImage;
Bmp : TBitmap;
var
Create:boolean;
begin
try
...
try
...
try
....
Bmp.Assign(Jpeg);
Bmp.Dormant;
Bmp.FreeImage;
//保存图片或者绘制图片
....
finally
end;
finally
......
end;
except
end;
.......
end;
还有rave 报表中,编辑是正常的,但打印就不正常了.用rave来做也是不行的..还是在fastreport中做手脚吧.
“但现在有一点,RAVE如果是BMP的话没有问题”
根据你这个说法,可以让你一直用bmp文件,Jpg格式的全部转化为bmp