Entwickler-Ecke
Multimedia / Grafik - Jpg während laufzeit aus Datei lesen
GlaN - Fr 03.06.05 18:59
Titel: Jpg während laufzeit aus Datei lesen
hi
ich hab ein kleines Problem und zwar habe ich einige images die ursprünglich nur Bmp's zeigen sollen, doch da mir das Programm zu groß wurde wollte ich alles auf JPG umstellen. Leider hab ich mit der Suchfunktion nichts gefunden das mein Problem löst.
jetzt mein Problem:
wenn ich das Bild ändern möchte geht das nicht
Fehlermeldung: 'Can only modify an image if it contains a bitmap'
ich hab in den uses jpeg hingeschrieben.
Delphi-Quelltext
1: 2: 3: 4:
| if strtoint(alist.Strings[14])>0 then p1.Picture.LoadFromFile(pod) else p1.Canvas.Rectangle(0,0,100,90); |
ich hoffe es kann mir jemand helfen
währe es auch möglich, dass das Problem dadurch besteht das ich das Programm mit Delphi 6 begonnen habe und jetzt das 2005er verwende?
mfg GlaN
DarkHunter - Fr 03.06.05 19:31
Du musst unter USES "JPEG" einbinden, dann sollte das gehen.
GlaN - Fr 03.06.05 20:00
Zitat: |
ich hab in den uses jpeg hingeschrieben.
|
:roll:
hilft nichts
DarkHunter - Fr 03.06.05 20:21
GlaN hat folgendes geschrieben: |
Zitat: |
ich hab in den uses jpeg hingeschrieben.
|
:roll:
hilft nichts |
wer lesen kann ist klar im vorteil :D
Also von der Konvertierung von D6 nach D2005 kann es eigentlich nicht kommen.
Was ist die variable pod?
und zweitens (pl ist ein TImage oder)
Delphi-Quelltext
1:
| pl.picture.canvas.Rectangle(0,0,100,90); |
GlaN - Fr 03.06.05 21:32
pod ist der Pfad der Datei
p1 ist ein Timage
und picture.canvas gibt es nicht!!!!
DarkHunter - Fr 03.06.05 21:48
*kratz sich am Kopf*
ab ich gerade ein Langzeit Blackout? :P
Ich weiß jetzt was das Problem ist.
In das Timage hast du ein JPG geladen
Canvas kann aber nur arbeiten wenn du ein bitmap im Timage hat
wie sich das lösen läßt weiß ich nicht
GlaN - Sa 04.06.05 00:42
das mit dem Canvas ist auch nur eine Notlösung.
ist es möglich das Bild zu entfernen, so das der Hintergrund wieder sichtbar ist?
jetzt übermale ich einfach das ganze Bild mit der Hitergrundfarbe :oops:
DarkHunter - Sa 04.06.05 12:23
für das übermalen brauchs du wieder canvas.
am einfachsten wäre es glaube ich das Timage einach unsichtbar zu machen und wenn ein neues bild geladen wird wieder sichtbar
GlaN - Sa 04.06.05 14:20
Danke das funktioniert
ein Problem hab ich jedoch noch
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.techgridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var s : integer; hx, hy : integer; begin hx := 0; hy := (y div 90)*90; techgrid.Canvas.Brush.Style := bsclear; s := y div 90+1; aslist.LoadFromFile(path+techlist.Strings[s]); atech := y div 90+2; techgrid.canvas.Pen.color := clblack; techgrid.Canvas.Rectangle(rectold); techgrid.canvas.pen.color := clyellow; techgrid.Canvas.rectangle(hx,hy,hx+100,hy+90); rectold.Right := hx; rectold.Top := hy; rectold.Left := hx+100; rectold.Bottom := hy+90;; end; |
techgrind ist wieder ein Timage
hier wird wenn ich einen bestimmten bereich des Bildes ancklicke dieser mit einem Gelben Rahmen eingeschlossen.
gibt es da eine andere Lösung
und muss ich bei den Bilderb bei Bmp bleiben
mfg GlaN
root_at_localhost - Sa 04.06.05 14:50
Lade die JPEG, kopiere das Bild in eine TBitmap, verändere es. Bei bedarf kopierst du es zurück in ein JPEG, komprimierst es und speichers es wieder.
GlaN - Sa 04.06.05 15:27
aber wie?
das funktioniert nicht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var oPicture: TJPEGImage; oBitmap: TBitmap;
begin techlist.LoadFromFile(path+'Angriff.txt'); oPicture := TJPEGImage.Create; oPicture.LoadFromFile(path+techlist.Strings[0]); oBitmap := TBitmap.Create; oBitmap.Assign(oPicture); techgrid.Picture.Assign(oBitmap); list := 1; end; |
root_at_localhost - Sa 04.06.05 17:36
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var jpeg : TJPEGImage; begin jpeg := TJPEGImage.Create; jpeg.LoadFromFile('Test.jpg'); Image1.Picture.Bitmap.Assign(jpeg); Image1.Picture.Bitmap.Canvas.Rectangle(1, 1, 50, 50); jpeg.Free; end; |
funktioniert bei mir ohne Probleme, Image1 ist ein TImage auf dem Formular.
GlaN - Sa 04.06.05 21:24
nein geht nicht: "JPEG error #53"
noch eine Frage kann man bei einem Image eine Farbe des Bildes unsichtbar machen?
gif Bilder gehen ja nicht.
DarkHunter - Sa 04.06.05 21:49
du musst transparency auf true setzen, dann wird die farbe durchsichtig geschaltet, die der untere linke pixel hat.
alternativ über
Delphi-Quelltext
1: 2:
| timage.transparencycolor := TColor; timage.tranparent := true; |
die farbe setzen
GlaN - Sa 04.06.05 22:09
hm wenn ich die transparencycolorauf zb clBlue setze ist das ganze bild nicht mehr zu sehen :?
[Edit] auch wenn ich nur image.picture.Bitmap.Transparent := true;
hinschreibe sieht man nichts mehr.
die Farbe im linken unteren Eck ist die die unsichtbar werden soll
[/Edit]
GlaN - So 05.06.05 13:24
so
ich hab mich noch ein bischen beschäftigt
und heraugefunden das es das nicht gibt!
timage.transparencycolor := TColor;
das gibt es:
timage.picture.bitmap.TransparentColor := TColor;
bringt aber nichts, da ich kein bitmap verwende. Auch wenn ich eines verwende hilft es nichts.
kann es sein das ich da eine eigene Componente brauche?
hab auch in der Hilfe von Delphi nichts passendes gefunden
mfg GlaN
root_at_localhost - So 05.06.05 17:03
Wie gesagt, ich habe den JPEG-Code getestet und er läuft. Welche Version von Delphi? Kann ich das Prog mal komplett einsehen, vieleicht kann ich dir dann helfen.
GlaN - So 05.06.05 17:48
GTA-Place - So 05.06.05 18:16
GlaN hat folgendes geschrieben: |
ist es möglich das Bild zu entfernen, so das der Hintergrund wieder sichtbar ist?
jetzt übermale ich einfach das ganze Bild mit der Hitergrundfarbe :oops: |
Delphi-Quelltext
1:
| Image1.Picture := nil; |
Meinst du das?
GlaN - So 05.06.05 18:35
Danke aber das Problem ist schon gehoben
jetzt muss ich nur noch ein Trnsparentes bild rein bringen
und ein paar wenige bilder auf jpg umstellen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!