bmp yi jgp ye dll içinden çevirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
myalcin
Üye
Mesajlar: 63
Kayıt: 11 Mar 2008 03:45

bmp yi jgp ye dll içinden çevirme

Mesaj gönderen myalcin »

merhaba arkadaşlar.
bir dll dosyası içinde jpeg2bmp diye fonksiyonu oluşturdum.
bunu programdan çağırarak kullanıyorum.
ama resmi 0 bayt olarak oluşturuyor. dll kodu:

Kod: Tümünü seç

library Project2;


uses
  SysUtils,
  Classes,
  Graphics,
  Jpeg;


function JPG2BMP(CONST FileName: TFileName):TBitmap;export;
var
  jpeg: TJPEGImage;
  bmp:  TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.CompressionQuality := 100; {Default Value}
    jpeg.LoadFromFile(FileName);
    bmp := TBitmap.Create;
    try
      bmp.Assign(jpeg);
      Result:=bmp;
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;


Exports
JPG2BMP;
{$R *.res}
begin
end.
programdaki kod:

Kod: Tümünü seç

function JPG2BMP(Const FileName:TFileName) :TBitmap;far;external 'dll\project2.dll';

procedure TForm2.Button1Click(Sender: TObject);
var
a:TBitmap;
begin
a:=JPG2BMP('C:\1.JPG');
a.savetofile:=('c:\son.bmp');
end;
son bmp oluşuyor ama 0 bayt normalde dll deki kodu program içinde kullansam çalışıyor . nasıl çözebilirim ? yardımlarınız için teşekkürler.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: bmp yi jgp ye dll içinden çevirme

Mesaj gönderen sabanakman »

myalcin yazdı:library Project2;


uses
SysUtils,
Classes,
Graphics,
Jpeg;


function JPG2BMP(CONST FileName: TFileName):TBitmap;export;
var
jpeg: TJPEGImage;
bmp: TBitmap;
begin
jpeg := TJPEGImage.Create;
try
jpeg.CompressionQuality := 100; {Default Value}
jpeg.LoadFromFile(FileName);
bmp := TBitmap.Create;
try
bmp.Assign(jpeg);
Result:=bmp;

finally
bmp.Free
end;
finally
jpeg.Free
end;
end;


Exports
JPG2BMP;
{$R *.res}
begin
end
-------------
function JPG2BMP(Const FileName:TFileName) :TBitmap;far;external 'dll\project2.dll';

procedure TForm2.Button1Click(Sender: TObject);
var
a:TBitmap;
begin
a:=JPG2BMP('C:\1.JPG');
a.savetofile:=('c:\son.bmp');

end;
Mantık olarak kodları zihninde adım adım satırları çalıştır ve oluşturulan TBitmap'in dosya kaydetme işlemi olmadan yok edildiğini görecekin :wink: . Bu bmp bileşenin biraz hor kullanmışsın gibime geliyor, iyisi mi dosyaya kayıt edilene kadar bu bileşeni yok etme. Yani kırmızı satırı kaldır. SaveToFile işleminden sonra Free yapmayı dene.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla