unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtDlgs, ExtCtrls, pngimage, jpeg, gifimg;
type
TForm1 =
class(TForm)
Image1: TImage;
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
mybitmap : TBitmap;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// Image1.Picture.RegisterFileFormat('CR2','CR2 Format',TWICImage);
Image1.Picture.RegisterFileFormat('
DNG','
DNG Format',TWICImage);
mybitmap := TBitmap.Create;
mybitmap.PixelFormat := PF24bit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.execute
then
begin
Image1.Picture.LoadFromFile(openDialog1.FileName);
//das folgende funktioniert mit den verschiedensten Bildformaten: bmp, jpg, gif, tif, png, dng
// Bilder werden angezeigt und im alten Format gespeichert
Image1.Picture.SaveToFile(ExtractFilePath(openDialog1.FileName) + '
test1' + ExtractFileExt(openDialog1.FileName) );
// das nun folgende funktioniert nur mit bmp-Bildern, ansonsten hat test2.bmp 0 Byte
// außerdem verschwindet das Bild von Form1 - alles ohne Fehlermeldung :-(
mybitmap.assign(Image1.picture.bitmap);
mybitmap.PixelFormat := PF24bit;
mybitmap.SaveToFile(ExtractFilePath(openDialog1.FileName) + '
test2.bmp');
end;
end;
end.
{ Das folgende funktioniert für bmp, jpg, png, gif
Ich weiß aber nicht nicht wie man tif- und dng- Bilder behandeln kann
var
jpg : TJPEGImage;
gif : TGifImage;
png : TPngImage;
// ?? tiff :
// ?? dng :
s : string;
begin
s := directory+ExtractFilename(currentfile);
if (pos('.gif', lowercase(s)) = length(s)-3) then
begin
GIF := TGIFImage.Create;
try
GIF.LoadFromFile(s);
mybitmap.Assign(GIF);
mybitmap.pixelformat := pf24bit;
finally
GIF.free;
end;
end
else
if (pos('.png', lowercase(s)) = length(s)-3) then
begin
png := TPNGimage.Create;
try
png.LoadFromFile(s);
mybitmap.assign(png);
mybitmap.pixelformat := pf24bit;
finally
png.free;
end;
end
else
if (pos('.jpg', lowercase(s)) = length(s)-3) then
begin
jpg:=TJPEGImage.Create;
jpg.Performance :=jpBestQuality;
jpg.ProgressiveDisplay := false;
try
jpg.LoadFromFile(s);
mybitmap.Assign(jpg);
mybitmap.PixelFormat:= pf24Bit;
finally
jpg.free;
end;
end;
}