梦
梦空
Unregistered / Unconfirmed
GUEST, unregistred user!
我现在需要实现ACDSEE的RESIZE一幅JPG图片的功能,比如原来是800*600,现在我希望是80*60,作为缩微图。使用以下类似代码已经实现了该功能,但是很遗憾,如果我使用DELPHI是可以实现的,如果我使用以下代码,编译成为DLL,就不能被其它软件,比如VB,PB调用了,直接报内存错误,不知道各位大虾有没有类似经验的?谢谢。
不过下面的实现方法是使用了Canvas,并没有直接分析JPG文件。
library resizejpg;
uses
SYSUTILS,
Classes,
WINDOWS,
Graphics,
Jpeg;
function resizeImage(sInImage, sOutImage: string; iHeight, iWidth: integer): boolean;
var
JpgImg : TJpegImage;
BmpImg : TBitmap;
Rectangle: TRect;
begin
try
JpgImg := TJpegImage.Create;
BmpImg := TBitmap.Create;
JpgImg.LoadFromFile(sInImage);
Rectangle := Rect(0, 0, iWidth, iHeight);
with BmpImg do
begin
Width := iWidth;
Height := iHeight;
Canvas.StretchDraw(Rectangle, JpgImg);
end;
finally
JpgImg.Assign(BmpImg);
JpgImg.SaveToFile(sOutImage);
JpgImg.Free;
BmpImg.Free;
end;
Result := True;
end;
exports
resizeImage index 1;
begin
end.
不过下面的实现方法是使用了Canvas,并没有直接分析JPG文件。
library resizejpg;
uses
SYSUTILS,
Classes,
WINDOWS,
Graphics,
Jpeg;
function resizeImage(sInImage, sOutImage: string; iHeight, iWidth: integer): boolean;
var
JpgImg : TJpegImage;
BmpImg : TBitmap;
Rectangle: TRect;
begin
try
JpgImg := TJpegImage.Create;
BmpImg := TBitmap.Create;
JpgImg.LoadFromFile(sInImage);
Rectangle := Rect(0, 0, iWidth, iHeight);
with BmpImg do
begin
Width := iWidth;
Height := iHeight;
Canvas.StretchDraw(Rectangle, JpgImg);
end;
finally
JpgImg.Assign(BmpImg);
JpgImg.SaveToFile(sOutImage);
JpgImg.Free;
BmpImg.Free;
end;
Result := True;
end;
exports
resizeImage index 1;
begin
end.