AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Inhalt von timage32 mit Layer speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt von timage32 mit Layer speichern

Ein Thema von Rudirabbit · begonnen am 27. Sep 2006 · letzter Beitrag vom 28. Sep 2006
Antwort Antwort
Rudirabbit

Registriert seit: 27. Sep 2006
111 Beiträge
 
#1

Inhalt von timage32 mit Layer speichern

  Alt 27. Sep 2006, 08:32
Hallo !
Ich baue gerade ein Bildbearbeitungsprogramm, nutze dazu graphics32.
Habe eigentlich alles, was ich einbauen wollte drin (drehen,skalieren,layers..)
Wenn ich aber das Ergebnis via. savetofile speichere, fehlen die Layer !
Habe dies : procedure ExecDrawLayers(Dest: TBitmap32; Stage: Integer); virtual;
auch schon versucht, funzt nicht

MFG !
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Inhalt von timage32 mit Layer speichern

  Alt 27. Sep 2006, 15:36
Ich nehme an, dass die Layer auch als solche separat bleiben sollen, und nicht mit dem Hintergrund final vereinigt werden. Dann gibt es 2 Varianten.

1) Du speicherst als normales Windows-Bitmap:
Das .bmp Format kann keine Layer speichern - es ist in der Spezifikation niemals vorgesehen worden. Einzige Chance: Jeden Layer separat als eigenes Bitmap speichern, und zusätzlich ein weiteres Bitmap für den jeweiligen Alphakanal. Um alle Layer und Kanäle zusammenzuhalten, böte sich ein eigenes Dateiformat an, in dem hinterlegt ist welche Dateien zusammen gehören.

2) Du implementierst Routinen zum speichern in Bildformaten, die diese Möglichkeit von sich aus bieten:
Als da wären: TGA, Photoshop, TIFF (glaube ich) und evtl. noch ein paar weitere. Es gibt hier und da Libraries die das können, und wenn man selbst dran will wäre http://www.wotsit.org vermutlich die erste Anlaufstelle für Infos zu den Formaten.



Naja, ein dritter Weg wäre es, ein komlpett eigenständiges Format zu entwickeln, dass das kann. Jedoch ist das wohl die schlechteste aller Lösungen, da keine andere Software diese lesen können wird. Da lohnt es sich denke ich mehr, ein wenig Arbeit in die Implementierung diverser (Quasi-)Standards wie in Punkt 2 genannt zu stecken.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Rudirabbit

Registriert seit: 27. Sep 2006
111 Beiträge
 
#3

Re: Inhalt von timage32 mit Layer speichern

  Alt 27. Sep 2006, 20:12
Hallo !
@dizzi: THX, für deine Lösungen, habe deinen 1. Vorschlag benutzt, mit Drawto werden die Layer draufgemalt, und als BMP abgespeichert.
Zitat:
Ich nehme an, dass die Layer auch als solche separat bleiben sollen, und nicht mit dem Hintergrund final vereinigt werden
Dies habe ich schon versucht, wie wäre das möglich ?
ExecDrawLayers ist wohl der falsche Weg, scheint für den direkten Aufruf nicht vorgesehen.

Ich will nicht z.b den Photoshop nachproggen, es soll eine JPEG Bilddatei einlesen, evtl. skalieren wenn nötig, oder drehen, und ein Wasserzeichen oä. plazieren.

Das Ganze soll als dann wieder als Jpeg gespeichert werden, was im Moment nicht richtig funzt, als bmp ist alles i.O.
Habe aber die Lösung mit Suchen gefunden. Zwar noch nicht getestet, denke aber schon das es so funzt.


MFG !

BTW: graphics32 ist geiles plugin , nur die Hilfedatei ist nicht die Beste !
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Inhalt von timage32 mit Layer speichern

  Alt 27. Sep 2006, 23:41
Zitat von Rudirabbit:
Hallo !
@dizzi: THX, für deine Lösungen, habe deinen 1. Vorschlag benutzt, mit Drawto werden die Layer draufgemalt, und als BMP abgespeichert.
Zitat:
Ich nehme an, dass die Layer auch als solche separat bleiben sollen, und nicht mit dem Hintergrund final vereinigt werden
Dies habe ich schon versucht, wie wäre das möglich ?
Öhm, halt mit den 2 vorgestellten Varianten . Du wolltest also tatsächlich die Layer "fest einrechnen" - ich dachte eben das nicht. Aber klappt ja nu ^^.

Zitat:
und ein Wasserzeichen oä. plazieren.
Wenn das vollautomatisch passiert, kannst du dir die Layer auch ganz sparen. Einfach das Wasserzeichen in einem separaten Bitmap vorhalten, und via Draw() in das Zielbild zeichnen. Fertig. Layer sind eigentlich aus 2 anderen Gründen da: Einmal die Möglichkeit eben Schichten (auch bei der persistenten Speicherung) getrennt zu halten, und um die Implenmentierung zu vereinfachen wenn Schichten vom User bewegt/modifiziert/hinzugefügt/gelöscht werden sollen.

Zitat:
BTW: graphics32 ist geiles plugin , nur die Hilfedatei ist nicht die Beste !
Och, ich kam bislang mit der Hilfe ganz gut zurecht (Aber es ist schon selten, dass überhaupt mal jemand die Hilfe entdeckt hat... )

lg,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Rudirabbit

Registriert seit: 27. Sep 2006
111 Beiträge
 
#5

Re: Inhalt von timage32 mit Layer speichern

  Alt 28. Sep 2006, 19:58
Hi !
Zitat:
Einfach das Wasserzeichen in einem separaten Bitmap vorhalten
Also - etwas Komfort soll schon drin sein
Nun das Wasserzeichen - es soll vom Anwender in beliebiger Position auf Hintergrund plaziert werden können.
Habe es so gelöst:
Wenn das Wasserzeichen als neuer Layer, zu sehen ist, kann man mit der Maus draufkicken, und es nach Wunsch verschieben.
Funzt auch wenn ich Zoome (scale<>1), dann ist etwas Rechnerei in der onmousemove nötig.

Zitat:
Och, ich kam bislang mit der Hilfe ganz gut zurecht (Aber es ist schon selten, dass überhaupt mal jemand die Hilfe entdeckt hat... )
Arbeite mit der Komponente erst seit kurzem

Also - THX für deine Hilfe


MFG Rudi !
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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