[delphi] image.savetofile doet raar

Pagina: 1
Acties:

  • Hardcell
  • Registratie: November 2004
  • Laatst online: 03-02-2023
Hoi,

Ik heb een probleempje met delphi. Ik laad een plaatje in van een ftp en laat deze zien op een form. Vervolgens wil ik deze naar een bestand wegschrijven en dan bouwt hij een bestand wat 10x de grootte van het origineel heeft! Deze kan ik uiteraard niet openen.. (Het zijn overigens allemaal jpeg-bestanden)

Hieronder de code

voor het openen:

code:
1
2
3
4
5
6
7
8
9
image := TPicture.Create;
url := '**************' + filename;
ms := TMemoryStream.Create;
fIdHTTP.Get(url, ms);
ms.Position := 0;
OleGraphic := TOleGraphic.Create;
OleGraphic.LoadFromStream(ms);
image.Assign(OleGraphic);
ms.Free;


voor het opslaan:
:
code:
1
2
  if sdImage.Execute then
    iPreview.Picture.SaveToFile(sdImage.FileName);


Suggesties?

  • QuasaR
  • Registratie: December 2000
  • Laatst online: 15:01

QuasaR

One ring to rule them all

Volgens mij sla je het bestand alleen maar op met de .jpg extensie maar is het in werkelijkheid een .bmp. Dat zou wel de grootte verklaren.
Bekijk de header van het bestand eens met een hex-editor.

[ Voor 10% gewijzigd door QuasaR op 16-09-2005 10:22 ]

Daddy of 3 :)


  • Hardcell
  • Registratie: November 2004
  • Laatst online: 03-02-2023
Het bestand staat als jpeg op de ftp-server waar ik het vanaf zuig dus dan zou delphi er zelf een bitmap van moeten hebben gebouwd..

edit:

ook als ik hem rename naar .bmp krijg ik hem trouwens niet geopend

[ Voor 25% gewijzigd door Hardcell op 16-09-2005 10:29 ]


  • SeatRider
  • Registratie: November 2003
  • Laatst online: 15:20

SeatRider

Hips don't lie

Hardcell schreef op vrijdag 16 september 2005 @ 10:26:
Het bestand staat als jpeg op de ftp-server waar ik het vanaf zuig dus dan zou delphi er zelf een bitmap van moeten hebben gebouwd..
Ja, dat doet ie volgens mij ook. Is het datatype van een Timage niet een bmp?

Nederlands is makkelijker als je denkt


  • Hardcell
  • Registratie: November 2004
  • Laatst online: 03-02-2023
Maar goed, ook als ik het als bmp opsla krijg ik die bestanden niet geopend dus er klopt toch ergens iets niet..

  • QuasaR
  • Registratie: December 2000
  • Laatst online: 15:01

QuasaR

One ring to rule them all

Ik heb het vermoeden dat er bij het inladen al iets niet goed gaat.

kijk eens of je iets met onderstaande code kunt
hierin staat een voorbeeld voor het inladen van een .jpg

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses
  JPEG;

procedure JPEGtoBMP(const FileName: TFileName);
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);
      bmp.SaveTofile(ChangeFileExt(FileName, '.bmp'));
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;


en hier een stukje code om een .bmp image als .jpg op te slaan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses
  Jpeg, ClipBrd;

procedure TfrmMain.ConvertBMP2JPEG;
  // konvertiert ein Bitmap, z.B. die Grafik eines TCharts in ein JPEG
  // converts a bitmap, the graphic of a TChart for example, to a jpeg
var 
  jpgImg: TJPEGImage;
begin
  // copy bitmap to clipboard
  chrtOutputSingle.CopyToClipboardBitmap;
  // get clipboard and load it to Image1
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,
    ClipBoard.GetAsHandle(cf_Bitmap), 0);
  // create the jpeg-graphic
  jpgImg := TJPEGImage.Create;
  // assign the bitmap to the jpeg, this converts the bitmap
  jpgImg.Assign(Image1.Picture.Bitmap);
  // and save it to file
  jpgImg.SaveToFile('TChartExample.jpg');
end;

[ Voor 41% gewijzigd door QuasaR op 16-09-2005 10:52 ]

Daddy of 3 :)


  • Hardcell
  • Registratie: November 2004
  • Laatst online: 03-02-2023
Bedankt!
Deze werkt wel inderdaad. Denk dat dat TOleGraphic het probleem was.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 28-04 18:15

Tomatoman

Fulltime prutser

Ik denk dat Hardcell het probleem was ;). Je sloeg zoals gezegd een bitmap op, niet een JPEG-bestand. Zie ook [rml][ Delphi] Compressed jpeg naar bitmap werkt niet[/rml].

Een goede grap mag vrienden kosten.

Pagina: 1