M Mr-cure Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-01 #1 我做扫描仪程序,可是扫下来的图片都很大, 所以我想自己做程序改变图象的实际尺寸。 还需要设置图象的分辨率。 有什么控件或者代码么?最好是代码! 谢谢!
L liwenbin Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-04 #4 用canvas.copyrect()试试,记住rect的大小不同。
房 房客 Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-04 #6 位图转化为16*16 var image1 : TPicture ; begin Image1 := TPicture.Create; Image1.LoadFromFile(Filename); if Pos('.BMP', Uppercase(FileName))>0 then Image1.Bitmap.Handle := CopyImage(Image1.Bitmap.Handle, Image_Bitmap,16, 16, Lr_CopyDeleteOrg) else Image1.Icon.Handle := CopyImage(Image1.Icon.Handle, Image_Icon, 16, 16,Lr_CopyDeleteOrg); end;
位图转化为16*16 var image1 : TPicture ; begin Image1 := TPicture.Create; Image1.LoadFromFile(Filename); if Pos('.BMP', Uppercase(FileName))>0 then Image1.Bitmap.Handle := CopyImage(Image1.Bitmap.Handle, Image_Bitmap,16, 16, Lr_CopyDeleteOrg) else Image1.Icon.Handle := CopyImage(Image1.Icon.Handle, Image_Icon, 16, 16,Lr_CopyDeleteOrg); end;
N netkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-07 #7 除了专业图形软件(外部)或用VC(内部),否则没办法.
A artx Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-07 #8 是扫描后调整大小么?如是,则: var Bmp1,Bmp2:TBitmap;//Bmp1是提取扫描的图,Bmp2是变化为宽100的小图 begin Bmp1=TBitmap.create; Bmp2=TBitmap.create; Bmp1.LoadFromFile('...'); Bmp2.PixelFormat =Bmp1.PixelFormat ; Bmp2.Width=100; Bmp2.Height =round(Bmp2.Width*Bmp1.Height/Bmp1.Width); Bmp2.Canvas.StretchDraw(Bounds(0,0, Bmp2.Width,Bmp2.Height), Bmp1); Bmp2.SaveToFile('d://temp.bmp'); end; 以上程序是随手写的,只是说明用法
是扫描后调整大小么?如是,则: var Bmp1,Bmp2:TBitmap;//Bmp1是提取扫描的图,Bmp2是变化为宽100的小图 begin Bmp1=TBitmap.create; Bmp2=TBitmap.create; Bmp1.LoadFromFile('...'); Bmp2.PixelFormat =Bmp1.PixelFormat ; Bmp2.Width=100; Bmp2.Height =round(Bmp2.Width*Bmp1.Height/Bmp1.Width); Bmp2.Canvas.StretchDraw(Bounds(0,0, Bmp2.Width,Bmp2.Height), Bmp1); Bmp2.SaveToFile('d://temp.bmp'); end; 以上程序是随手写的,只是说明用法
M Mr-cure Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-09 #9 urus: 你提供的函数我试过了,大小可以改变。但是图形缩小后模糊不清。 不过实在不行的话也许只能这样了。 artx: 你的方法我试了,好象不行。 另外:图象的分辨率怎么改? 我觉得拿程序做好象既改分辨率又改大小还要清晰度 似乎不大可能。所以诸位有没有 比较好的扫描仪控件。我只找到EZTWAIN和MULITTWAIN, 在大富翁控件库里找到的。 有没有别的?
urus: 你提供的函数我试过了,大小可以改变。但是图形缩小后模糊不清。 不过实在不行的话也许只能这样了。 artx: 你的方法我试了,好象不行。 另外:图象的分辨率怎么改? 我觉得拿程序做好象既改分辨率又改大小还要清晰度 似乎不大可能。所以诸位有没有 比较好的扫描仪控件。我只找到EZTWAIN和MULITTWAIN, 在大富翁控件库里找到的。 有没有别的?
A artx Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-11 #10 Mr-cure,是哪里出错? 我试了后是对的。 Bmp2.SaveToFile('d://temp.bmp'); 应改为 Bmp2.SaveToFile('d:/temp.bmp'); 这个程序能保证图像缩小后同样清晰! 有问题我就发原码给你!
Mr-cure,是哪里出错? 我试了后是对的。 Bmp2.SaveToFile('d://temp.bmp'); 应改为 Bmp2.SaveToFile('d:/temp.bmp'); 这个程序能保证图像缩小后同样清晰! 有问题我就发原码给你!
W wint Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-11 #11 怎么可能同样清晰呢? 细微之处肯定会锯齿。 使用某种算法可能会得到比较理想的效果。比如lanczos。。。。
M Mr-cure Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-11 #12 artx:都怪我自作聪明,看了strechdraw的help后,把你的那个bounds改成了rect。 导致了生成的图片一片漆黑。 我刚才试着还是用bounds了,效果真不错! 谢谢! 剩下的就是分辨率的问题了!如果扫出的图片分辨率低于300,那就不管了,如果高于,就得改到300.
artx:都怪我自作聪明,看了strechdraw的help后,把你的那个bounds改成了rect。 导致了生成的图片一片漆黑。 我刚才试着还是用bounds了,效果真不错! 谢谢! 剩下的就是分辨率的问题了!如果扫出的图片分辨率低于300,那就不管了,如果高于,就得改到300.
A artx Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-11 #13 wint,我所说的同样清晰是指缩小后不会起锯齿,图像不会花(若用copyrect则图像质量很花),肉眼观察效果同样好;你所说的属于无级缩放算法,如Mitchell、Lanczos、Bell等等,效果很好,但速度慢,若只是用于缩小,则用StretchDraw就能达到较好的效果了。^_^
wint,我所说的同样清晰是指缩小后不会起锯齿,图像不会花(若用copyrect则图像质量很花),肉眼观察效果同样好;你所说的属于无级缩放算法,如Mitchell、Lanczos、Bell等等,效果很好,但速度慢,若只是用于缩小,则用StretchDraw就能达到较好的效果了。^_^
M Mr-cure Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-13 #14 分辨率的问题我改 TWAIN的DLL源程序搞定了。但是昨天没有发现的一个问题。 就是用artx的方法把图片缩小后,图片的分辨率缩小为72dpi,我后来试验了一 下,好像是Tbitmap.create出来的bmp分辨率都是72dpi.请问怎么改到300dpi阿?
分辨率的问题我改 TWAIN的DLL源程序搞定了。但是昨天没有发现的一个问题。 就是用artx的方法把图片缩小后,图片的分辨率缩小为72dpi,我后来试验了一 下,好像是Tbitmap.create出来的bmp分辨率都是72dpi.请问怎么改到300dpi阿?