cximageu.dll是C++写的,我想用delphi调用这个DLL来压缩图片,可以吗,高手帮忙看看?
能不能给个代码参考,谢谢!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, StdCtrls, jpeg;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function fun_BmpToJpg(temp, path: String; ACQ: Integer): Boolean; stdcall;
var
MyJpeg: TJpegImage;
Bmp: TBitmap;
begin
result := false;
if FileExists(temp) then
begin
Bmp:= TBitmap.Create;
MyJpeg:= TJpegImage.Create;
Bmp.LoadFromFile(temp);
MyJpeg.Assign(Bmp);
MyJpeg.CompressionQuality := ACQ;
MyJpeg.Compress;
MyJpeg.SaveToFile(Path);
MyJpeg.free;
Bmp.free;
if FileExists(path) then
result := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
temp: String;
begin
OpenDialog1.Execute();
temp := OpenDialog1.FileName;
fun_BmpToJpg(temp, ChangeFileExt(temp, '.jpg'), 100); //最后一个参数可以修改图像质量,质量越差,那么图片越小
end;
end.
不知道你说得是什么,是opencv么?当然可以。如果是你自己写的库,有函数原型、类型兼容就可以调用。
这个是这个DLL的函数表
看了下,这个里面有很多c++的成员函数,用delphi直接调用有难度,你有两个办法,第一个是用c++再封装一次,导出没有成员函数的普通函数,再delphi调用。
或者,找别的压缩图片的,适用delphi的库,这种代码有很多。
图像压缩处理转格式, 高版本delphi直接用自带的TWICImage来做, 底层调用的是windows的wincode
用法参考万一的博客: https://www.cnblogs.com/del/archive/2009/10/19/1586264.html