Autor |
Beitrag |
Noob23
Beiträge: 93
Win XP, Win Server 2003, Win 7, Ubuntu
Delphi 7, c/c++ Dev-c++, µC-8051 Keil, Webdesign Notepad++
|
Verfasst: Mo 22.02.10 14:59
Hallo zusammen,
habe mir grad ein Programm geschrieben, welches ein Bild(jpg) läd und in einem TImage fester Größe (stretch) anzeigt. Nun soll via Maus ein Ausschnitt markiert und in ein zweites Timage kopiert werden können (kleineres Thumbnail wird auch gestretcht).
Wenn ich versuche das ganze mit canvas.copyrect zu lösen gibt es farbverfälschungen.
Mit canvas.stretchdraw komm ich momentan mit den Parametern noch nicht klar, so dass der Ausschnitt stimmt - denk mir aber das das auch nicht die beste Lösung sein kann.
Ehrlich gesagt kann ich gar nicht verstehen, warum es zu diesen Verfälschungen kommt, wandelt man nicht das JPEG mit "assign" in ein BMP um?
Habe nur am Rand mit Bildern in Delphi gearbeitet, bin daher Dankbar für jeden Denkanstoss wie man die Sache besser angehen kann!
Grüße
Noob23
_________________ Man streitet zwar noch über die Entstehung der Erde -
Aber über den Untergang sind sich doch schon alle einig...
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mo 22.02.10 18:32
Um dir besser helfen zu können solltest du wohl deinen genauen Code zeigen und die Farbverfälschungen genauer beschreiben oder einen Screenshot anhängen.
So direkt fällt mir jedenfalls nix ein.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Noob23
Beiträge: 93
Win XP, Win Server 2003, Win 7, Ubuntu
Delphi 7, c/c++ Dev-c++, µC-8051 Keil, Webdesign Notepad++
|
Verfasst: Mo 22.02.10 19:33
image1 ist 500 x 500 Pixel groß und stretch := true
image2 ist 80 x 120 Pixel (stretch auch true wobei das ja egal sein dürfte wenn ich 80 x 120 Pixel kopiere)
Kopiert wird das Thumb Mithilfe der Ereignisse OnMouseDown OnMouseUp vom Image1.
Habe wegen der Übersichtlichkeit nur die wichtigsten Code-Passagen kopiert:
Quelltext zum öffnen des JPG´s:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| image := TJPEGImage.Create; try image.CompressionQuality := 100; image.LoadFromFile(Filename); image1.Picture.Bitmap.Assign(image); finally image.Free; end; |
Quelltext zum kopieren des Thumbnial:
Delphi-Quelltext 1:
| image2.Canvas.CopyRect(rect(0,0,80,120),image1.Canvas,rect(x1,y1,x2,y2)); |
nur wenn wirklich ein Ausschnitt von 80x120Pixel genommen wurde gabs kein Probleme, also z.B.
Delphi-Quelltext 1:
| image2.Canvas.CopyRect(rect(0,0,80,120),image1.Canvas,rect(50,50,130,170)); |
...sonst sind Verfälschungen wie im Anhang aufgetreten.
Hoffe die Beschreibung genügt fürs Verständniss.
Besten Dank
Noob23
Einloggen, um Attachments anzusehen!
_________________ Man streitet zwar noch über die Entstehung der Erde -
Aber über den Untergang sind sich doch schon alle einig...
|
|
Noob23
Beiträge: 93
Win XP, Win Server 2003, Win 7, Ubuntu
Delphi 7, c/c++ Dev-c++, µC-8051 Keil, Webdesign Notepad++
|
Verfasst: Mo 22.02.10 21:29
Hab nochmal den wesentlichen Teil in ein extra Programm gepackt.
Hier kann man zwar jetz keine JPG´s speichern aber das tut der Sache keinen Abbruch, da man den Fehler schon in den Images sehen kann.
Hab zum Vergleich eine normale TImage und eine aus der Graphics32 (es ist aber kein sehenswerter Unterschied).
Aber nachdem was die Graphics so alles leistet (wenn man die Beispiele angeschaut hat) sollte das mit den Verfärbungen doch kein Problem sein... bin leider nur noch dahinter gestiegen.
Werd mir Morgen den Resampler anschaun - vll ist der des Rätsel´s Lösung
Grüße
Noob23
Einloggen, um Attachments anzusehen!
_________________ Man streitet zwar noch über die Entstehung der Erde -
Aber über den Untergang sind sich doch schon alle einig...
|
|
Noob23
Beiträge: 93
Win XP, Win Server 2003, Win 7, Ubuntu
Delphi 7, c/c++ Dev-c++, µC-8051 Keil, Webdesign Notepad++
|
Verfasst: Di 23.02.10 20:48
Mit der Anweisung 'SetStretchBltMode' scheint es nun zu funktionieren, wäre trotzdem Dankbar wenn noch jemand eine bessere Lösung parat hat und diese postet, da ich bisher nicht sicher sein kann ob es nun auch in jedem Fall funktioniert.
Grüße
Noob23
_________________ Man streitet zwar noch über die Entstehung der Erde -
Aber über den Untergang sind sich doch schon alle einig...
|
|
|