BMP转JPG 请指教(100分)

  • 主题发起人 主题发起人 jinzuo007
  • 开始时间 开始时间
J

jinzuo007

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾: 小弟想将BMP图转化为JPG图,最好还能按比例缩放,然后发送,
待接收端受到后再按比例扩展,然后显示。不知有和办法?请各位高手赐教,
小弟先谢了!
 
Delphi可以做到自如的转换,Delphi内置BMP和JPG的支持
var
MyJpeg: TJpegImage;
MyBitmap : TBitmap ;
begin
MyBitmap := TBitmap.Create();
MyJpeg:= TJpegImage.Create();
MyBitmap.LoadFromFile('c:/windows/desktop/aa.BMP'); // Load the Bitmap from a file
MyJpeg.Assign(MyBitmap); // Assign the BitMap to MyJpeg object
// MyJpeg.Canvas.StretchDraw(TRect(0,0, nImageWidth, nImageHeight), MyBitmap);
MyJpeg.CompressionQuality:=StrToInt('75');
MyJpeg.Compress;
MyJpeg.SaveToFile('c:/windows/desktop/test.JPG'); // Save the JPEG to Disk
end;

直接使用TJpegImage和TBitmap的Canvas子对象进行StretchDraw方法缩放操作。
(代码全部凭空想象的,仅仅说明道理,自己加以除错调试)
 
没有想到TJpegImage还有这个有用又简单的功能,不愧是版主
 
千穿万穿,马屁不穿
 
我将我的一个缩放例子给你,你自己看看,改一下即可。要缩小就传Rates小于1,变大就大
于1。
procedure Zoom(Img: TImage;const Rates:single);
var
Bmp :TBitmap;
begin
try
iScaleRate:=Round(Rates*PERCENT);
CboScale.Text:=IntToStr(iScaleRate);
Bmp :=TBitmap.Create;
Bmp.Width :=Round(TifPic.Width*Rates);
Bmp.Height :=Round(TifPic.Height*Rates);
Img.Picture:=nil;
Img.Picture.Bitmap.Assign(TifPic);
StretchBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,
Img.Picture.Bitmap.Canvas.Handle,0,0,Img.Picture.Bitmap.Width,Img.Picture.Bitmap.Height,SRCCOPY);
Img.AutoSize :=True;
Img.Picture:=nil;
Img.Picture.Bitmap.Assign(Bmp);
BufferPic.Graphic:=nil;
BufferPic.Bitmap.Assign(Bmp);
Position := Point(0,0);
except
ShowMessage('You scale the picture to large! Out of memory!!');
CboScale.Text:='100';
iScaleRate:=100;
Zoom(Image1,iScaleRate/PERCENT);
end;
Bmp.Free;
end;
转BMP为JPEG就照楼上的来。最好自己动手,不然你直接贴代码记忆不会深刻。要转回来就
反过来写。
 
各位大虾!小弟万分感谢!!受益非浅!!谢谢,谢谢各位!![:D]
只是这么多的答案,而且都是有道理的。小弟真不知该把分送给那为大虾[?]
很是为难!:(

经过小弟的仔细研究,感觉zhangkan大虾的指教最为详细,DragonPC_???的很有理念所以
小弟把分加给zhangkan和DragonPC_???还望各位大虾体谅!谢谢![:D]
 
后退
顶部