我有一张图片demo.bmp,我只需要这图片上的一个部分就行了,但是我不知道我的下面的代码哪里错。请指教高手们。
截取这个图片后就保存到demo12.bmp,procedure TForm1.Button4Click(Sender: TObject);
var
rect1, rect2: trect;
mCanvas: TCanvas;
mHDC: HDC;
bitmap : tbitmap;
begin
try
bitmap := tbitmap.create; bitmap.loadfromfile('d:\我的文档\桌面\test\demo.bmp');
mCanvas := TCanvas.Create; mHDC := GetDC(bitmap.Handle); mCanvas.Handle := mHDC; rect1 := bitmap.Canvas.ClipRect; rect2 := Rect(300, 400, bitmap.Handle , bitmap.Handle ); bitmap.Canvas.CopyRect(rect2,mCanvas,rect1);
bitmap.SaveToFile('d:\我的文档\桌面\test\demo12.bmp'); bitmap.free;
mCanvas.Free;
finally
end;
end;
截取这个图片后就保存到demo12.bmp,procedure TForm1.Button4Click(Sender: TObject);
var
rect1, rect2: trect;
mCanvas: TCanvas;
mHDC: HDC;
bitmap : tbitmap;
begin
try
bitmap := tbitmap.create; bitmap.loadfromfile('d:\我的文档\桌面\test\demo.bmp');
mCanvas := TCanvas.Create; mHDC := GetDC(bitmap.Handle); mCanvas.Handle := mHDC; rect1 := bitmap.Canvas.ClipRect; rect2 := Rect(300, 400, bitmap.Handle , bitmap.Handle ); bitmap.Canvas.CopyRect(rect2,mCanvas,rect1);
bitmap.SaveToFile('d:\我的文档\桌面\test\demo12.bmp'); bitmap.free;
mCanvas.Free;
finally
end;
end;
jpg := TJPEGImage.Create; try
try
jpg.LoadFromFile(photoFile.FileName); //读取源文件
if jpg.Width >= jpg.Height then //计算缩小比例
n := jpg.Width
else
n := jpg.Height;
for k := 1 to maxLoopTime do begin
r1 := (k + 0)/maxLoopTime * n;
r2 := (k + 1)/maxLoopTime * n;
if (Round(r1) < maxImageSize) and (Round(r2) >= maxImageSize) then break;
end; bmp.Width := jpg.Width; //缩小
bmp.Height := jpg.Height;
bmp.PixelFormat := pf24bit; // 设置格式
bmp.Canvas.StretchDraw(Rect(0,0,width, height), jpg);
catch
on EE: Exception do
Application.MessageBox(PAnsiChar('读相片信息失败: ' + EE.Message), 'ePhoto 提示', 48);
end;
finally
bmp.Free;
jpg.Free;
end;
上面是俺的一段代码,区别在于俺设置了 bmp.PixelForm