Autor Beitrag
Sidi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47


Delphi XE5 Prof.
BeitragVerfasst: Mi 15.02.06 19:45 
Hallo zusammen,

wie JPEGs verkleinert werden können wird ja in allen Foren ausgiebig behandelt. Folgendes Beispiel habe ich versucht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
function ResizeJPG(FileName: String; NewFileName: String; NewWidth, NewHeight: Integer): String;
var RBit, Bit: TBitmap;
    JPG: TJPEGImage;
begin
  Bit:=TBitmap.Create;
  RBit:=TBitmap.Create;
  JPG:=TJPEGImage.Create;
  JPG.LoadFromFile(FileName);
  Bit.Assign(JPG);       {### hier Fehlermeldung ###}
  RBit.Width:=NewWidth;
  RBit.Height:=NewHeight;
  RBit.Canvas.StretchDraw(Rect(0,0,NewWidth,NewHeight),Bit);
  JPG.Assign(RBit);
  JPG.SaveToFile(FileName);
  JPG.Free;
  RBit.Free;
  Bit.Free;
  Result := 'OK';
end;


An der Stelle Bit.Assign(JPG) erhalte ich jedoch die Fehlermeldung :

TJPEGImage kann nicht zu TBitmap zugewiesen werden

woran kann das liegen???

Gruß

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mi 15.02.06 21:06 
Kann das Problem nicht nachvollziehen, bei mir funktioniert es einwandfrei.
Welche Delphi Version hast du? Kannst du bei einem TImage unter Picture ein JPG auswählen, oder ist nur BMP/WMF erlaubt.

Ausserdem ahst du noch einen Fehler bei SaveToFile wo newFileName hin muss, hab mir da nen Bild kaputt gemacht :/

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Sidi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47


Delphi XE5 Prof.
BeitragVerfasst: Mi 15.02.06 21:22 
habe Delphi 6, ist mir ein Rätzel warum es nicht geht.

Ich habe die Übergabe des JPEGs jetzt nach einem anderen Beilpiel programmiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
Procedure JPG_Bildformat_aendern_speichern(FileName: String; NewFileName: String; NewWidth, NewHeight: Integer);
var BMP: TBitmap;
    JPEG: TJPEGImage;
begin
  JPEG:=TJPEGImage.Create;
  JPEG.LoadFromFile(FileName);


  BMP:=TBitmap.Create;
  BMP.Height := NewHeight;
  BMP.Width  := NewWidth;

  BMP.Canvas.StretchDraw(Rect(0,0,BMP.Width,BMP.Height),JPEG);
  JPEG.Assign(BMP);

  JPEG.SaveToFile(NewFileName);
  JPEG.Free;
  BMP.Free;

end;

Hier erhalte ich gleich einen Compilerfehler:

Inkompatible Typen: 'TGraphic' und 'TJPEGImage',

hat mein Delphi hier ne Macke??

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mi 15.02.06 21:28 
Meine Delphi3/7 Profs compilen das...
Hast du vielleicht irgendwann mal die Jpeg.pas überschrieben (z.b. mit einer version die du aus dem Internet hast)
Hast du überhaupt d6 prof?

Sonst muss das jemand anderes mit deiner Delphi Version mal testen.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Sidi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47


Delphi XE5 Prof.
BeitragVerfasst: Mi 15.02.06 21:49 
ja ich habe Delphi 6.0 Professional Build 6.240 Update Pack 2 und bin Ratlos :-(

eine JPEG.PAS ist nicht vorhanden nur die JPEG.DCU vom 04.06.01 8:00

Gruß Klaus
Sidi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47


Delphi XE5 Prof.
BeitragVerfasst: Do 16.02.06 18:55 
Titel: Lösung gefunden :-)
Hallo zusammen,

nach langem hin und her habe ich die Lösung (per Zufall) gefunden:

In der Delphi-Hilfe zu TBitmap wird TBitmap als ein Objekt der Unit QGraphics dargestellt, also habe ich in der USES Anweisung auch QGraphics eingetragen und bekam obige Fehler :-(

Jetzt habe ich einfach mal nur Graphics in die USES Anweisung geschrieben und es funktioniert :-)

Würde mich jetzt nur mal interessieren warum in der Delphi Hilfe auf die QGraphics verwiesen wird??

Gruß Klaus
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 16.02.06 19:22 
Hast Du zu TBitmap die CLX- oder VCL-Hilfe aufgerufen? Bei ersterer wird auf die CLX-Libraries verwiesen, die mit Q anfangen.
Sidi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47


Delphi XE5 Prof.
BeitragVerfasst: Do 16.02.06 19:37 
war wohl die CLX-Referenz, habe ich garnicht darauf geachtet :-)