Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Fehler beim Speichern von TImage (https://www.delphipraxis.net/125414-fehler-beim-speichern-von-timage.html)

draeger1980 5. Dez 2008 18:37


Fehler beim Speichern von TImage
 
Hi,

ich habe da ein Problem mit der TImage Komponente :
- ich lade erst ein JPEG in eine TJpegImage
- dann weise ich der TImage Komponeten das TJpegImage mit hilfe von Assign zu
- ändere die Farbtiefe (Bit) oder andere Werte wie in Graustufen anzeigen
+ das wird auch super dargestellt
- nur leider wenn ich die TImage Komponente Speichern möchte ist das File leer

was mache ich da falsch ?

mein zweites Problem ist wenn ich die CompressQuality ändere dann geschieht nix.
Die Lösung hier im Forum : Delphi - Praxis hat mir auch nicht weiter geholfen, da ich dann immer ein leeres TImage hatte.

mkinzler 5. Dez 2008 18:39

Re: Fehler beim Speichern von TImage
 
Zeig mal deinen Code

draeger1980 5. Dez 2008 18:43

Re: Fehler beim Speichern von TImage
 
würde ich gerne aber habe ich erst montag wieder zur hand da mein anderer rechner mit dem ich arbeite ca 200km weit weg steht.

turboPASCAL 5. Dez 2008 19:04

Re: Fehler beim Speichern von TImage
 
Zitat:

Zitat von draeger1980
würde ich gerne aber habe ich erst montag wieder zur hand da mein anderer rechner mit dem ich arbeite ca 200km weit weg steht.

Tja, so etwas ist für eine Problembewältigung etwas behindernt.

blink182 5. Dez 2008 20:46

Re: Fehler beim Speichern von TImage
 
Delphi-Quellcode:
procedure Graustufe(Bitmap: TBitmap);
var x,y  :integer;
    pixel :^TRGB;
    grau :TColor;
begin
for y:= 0 to bitmap.height-1 do
   begin
      pixel:= bitmap.Scanline[y];
         for x:= 0 to bitmap.width-1 do
            begin
               grau:= HiByte(pixel.red*77+pixel.green*151+pixel.blue*28);
               pixel.red:= grau;
               pixel.blue:= grau;
               pixel.green:= grau;
               inc(pixel)
            end
   end;
   bitmap.assign(Bitmap);
end;

procedure TForm1.Button1Click(Sender: TObject);
var jpeg: TImage;
begin
jpeg:=TImage.Create(Self);
jpeg.picture.loadfromfile('C:\Bild1.jpg');
image1.height:=jpeg.picture.Height;
image1.Width:=jpeg.picture.Width;
Image1.Canvas.Draw(0,0,jpeg.Picture.graphic);
Image1.picture.Assign(jpeg.picture);
end;

procedure TForm1.Button2Click(Sender: TObject);
var pic: Tbitmap;
begin
pic:=TBitmap.create;
pic.Assign(Image1.picture.graphic);
Graustufe(pic);
Image1.Picture.bitmap.assign(pic);
pic.free;
Image1.picture.SaveToFile('C:\lol.bmp');
end;
also was wohl ein beliebter fehler sein könnte
Delphi-Quellcode:
pic.Assign(Image1.picture.graphic);
dass man hier
Delphi-Quellcode:
Image1.picture.bitmap
benutzt.
ist jetzt nicht sauber programmiert, mit try und except und so... aber sollte funktionieren

draeger1980 5. Dez 2008 22:00

Re: Fehler beim Speichern von TImage
 
muss man denn immer das jpeg erst in ein bitmap umwandeln damit man es speichern kann ?

also meine idee war es :

image1.picture.savetofile(XYZ+'.jpg');

blink182 5. Dez 2008 22:47

Re: Fehler beim Speichern von TImage
 
mhm auf die Idee bin ich früher auch gekommen, bringt nur leider nichts^^ du hast dann zwar eine Datei die xyz.jpg heißt aber eigentlich noch ein bmp ist, also musst du die datei umwandeln ;)

Zitat:

BMP2JPG
Delphi-Quellcode:
uses Jpeg;

procedure Bmp2Jpeg(const BmpFileName, JpgFileName: string);
var
  Bmp: TBitmap;
  Jpg: TJPEGImage;
begin
  Bmp := TBitmap.Create;
  Jpg := TJPEGImage.Create;
  try
    Bmp.LoadFromFile(BmpFileName);
    Jpg.Assign(Bmp);
    Jpg.SaveToFile(JpgFileName);
  finally
    Jpg.Free;
    Bmp.Free;
  end;
end;



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz