delphi 可以调用cximageu.dll吗?利用cximageu.dll里的函数进行图片压缩?

cximageu.dll是C++写的,我想用delphi调用这个DLL来压缩图片,可以吗,高手帮忙看看?
能不能给个代码参考,谢谢!

5个回答

图片说明

 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.

看了下,这个里面有很多c++的成员函数,用delphi直接调用有难度,你有两个办法,第一个是用c++再封装一次,导出没有成员函数的普通函数,再delphi调用。
或者,找别的压缩图片的,适用delphi的库,这种代码有很多。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复a814123: 你说的大小是指像素么?
一年多之前 回复
a814123
814123 回复caozhy: 比如1MB的BMP或者JPG图片,压缩下之后变成129KB的图片,大小不变。
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复a814123: 你要怎么压缩
一年多之前 回复
a814123
814123 C++不会,delphi的库好像没有找到,你有处理图像的DELPHI的库吗?
一年多之前 回复

不知道你说得是什么,是opencv么?当然可以。如果是你自己写的库,有函数原型、类型兼容就可以调用。

图片说明
这个是这个DLL的函数表

图像压缩处理转格式, 高版本delphi直接用自带的TWICImage来做, 底层调用的是windows的wincode

用法参考万一的博客: https://www.cnblogs.com/del/archive/2009/10/19/1586264.html

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问