amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Bilder Speichern mit Datatypes [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

19.10.2004, 09:47 Uhr

bubblebobble
Posts: 707
Nutzer
Ja, ich habe alte Threads durchgeguckt.
Kann das Thema aber nicht finden. Deshalb nochmal die
Frage, wie kann ich mit Datatypes ein geladenens Bild,
also z.B. eine OS Bitmap oder Rastport wieder abspeichern,
und zwar nicht mit dem internen IFF-ILBM sondern mit einem
beliebigen Bild-Datatype ?
Am besten ein kurzes Codeschnipsel, das würde mr reichen.

Danke!

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, UDM, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de



[ - Antworten - Zitieren - Direktlink - ]

19.10.2004, 18:57 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Ich habe das zwar noch nicht untersucht, aber soweit ich weiss sind die Datatypes nur zum laden der Dateien, das speichern geschieht immer im Standardt Amiga Format, d.h. in ILBM. Hoffentlich irre ich mich!

[ - Antworten - Zitieren - Direktlink - ]

20.10.2004, 00:58 Uhr

whose
Posts: 2156
Nutzer
Hi Thilo,

also, ich hab das Ganze selbst noch nie benutzt, aber es gibt die
Methode DTM_WRITE bei den Datatypes. Normalerweise ist diese Methode
für den Zweck, wie Du ihn anstrebst, vorgesehen ;) Prinzipiell ist es
also möglich, Bilddaten mittels Datatype schreiben zu lassen.

Jetzt hängts natürlich von den eingesetzten Datatypes ab, ob diese
das Schreiben der Daten überhaupt implementieren. Die Methode als
solche müßte normal durch das Datatype behandelt werden, soweit ich
weiß haben aber nur die wenigsten Datatypes diese Methode tatsächlich
funktionstüchtig implementiert. Müßtest mal in der jeweiligen Doku
nachschauen, ob der jeweilige Datatype diese Methode vollständig
implementiert hat.

Für Versuchszwecke tuts aber auch der Standard-IFF-Datatype, der
DTM_WRITE implementiert hat.

---

/* DTM_WRITE */
struct dtWrite
{
ULONG MethodID;
struct GadgetInfo *dtw_GInfo; /* Gadget information */
BPTR dtw_FileHandle; /* File handle to write to */
ULONG dtw_Mode;
struct TagItem *dtw_AttrList; /* Additional attributes */
};

---

Das ist die entsprechende Msg-Struktur für die DTM_WRITE Methode.
Soweit ich weiß, gibst Du in dtw_Mode DTWM_IFF an, dann speichert das
Datatype die ganze Chose als IFF. Mit DTWM_RAW entsprechend als RAW.

Über dtw_AttrList habe ich leider nichts gefunden, aber irgendwo tief
in der DeveloperCD2.1 sollten sich Informationen darüber finden lassen.

Grüße

[ - Antworten - Zitieren - Direktlink - ]

20.10.2004, 09:21 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Original von DariusBrewka:
Ich habe das zwar noch nicht untersucht, aber soweit ich weiss sind die Datatypes nur zum laden der Dateien, das speichern geschieht immer im Standardt Amiga Format, d.h. in ILBM. Hoffentlich irre ich mich!

Dur irrst Dich. Allerdings unterstützen die meisten Datatypes nur das Laden. Ausnahmen bestätigen die Regel ;-)

[ - Antworten - Zitieren - Direktlink - ]

20.10.2004, 10:25 Uhr

gni
Posts: 1106
Nutzer
Zitat:
whose:
Soweit ich weiß, gibst Du in dtw_Mode DTWM_IFF an, dann speichert das
Datatype die ganze Chose als IFF.

Fast richtig. Falls ein DT Speichern unterstützen sollte, dann muß in der Nachricht DTWM_RAW stehen, damit der Sub-DT in seinem Format speichert. Wenn der DT darauf prüft, könnte er einen Fehler generieren, das Speichern nicht unterstützt wird. Bei DTWM_IFF und wenn WRITE garnicht behandelt wird (so machens die meisten DTs), dann landet der Request beim obersten DT (hier: picture.datatype) und der speichert in "seinem" Format: IFF/ILBM.

[ Dieser Beitrag wurde von gni am 20.10.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

20.10.2004, 15:48 Uhr

whose
Posts: 2156
Nutzer
Zitat:
Original von gni:

Fast richtig. Falls ein DT Speichern unterstützen sollte, dann muß in der Nachricht DTWM_RAW stehen, damit der Sub-DT in seinem Format speichert. Wenn der DT darauf prüft, könnte er einen Fehler generieren, das Speichern nicht unterstützt wird. Bei DTWM_IFF und wenn WRITE garnicht behandelt wird (so machens die meisten DTs), dann landet der Request beim obersten DT (hier: picture.datatype) und der speichert in "seinem" Format: IFF/ILBM.

[ Dieser Beitrag wurde von gni am 20.10.2004 editiert. ]


Bei der Gelegenheit: Wie ist denn der korrekte Ablauf zum Auswählen des gewünschten Datatypes zum Speichern?

Grüße


[ - Antworten - Zitieren - Direktlink - ]

20.10.2004, 16:43 Uhr

gni
Posts: 1106
Nutzer
Zitat:
whose:
Bei der Gelegenheit: Wie ist denn der korrekte Ablauf zum Auswählen des gewünschten Datatypes zum Speichern?

Im AmiNet gibt es irgendwelche Beispiele von Roland Mainz bezüglich dieses Themas. Vermutlich ist es das hier: DTConvert und das datatypes.library 45.x (von Roland Mainz!)

[ - Antworten - Zitieren - Direktlink - ]

20.10.2004, 22:14 Uhr

whose
Posts: 2156
Nutzer
Danke Dir für die Links. Da werd ich gleich mal reinschaun :)

Grüße




[ - Antworten - Zitieren - Direktlink - ]

21.10.2004, 16:57 Uhr

thomas
Posts: 7718
Nutzer
Zitat:
Original von whose:
Bei der Gelegenheit: Wie ist denn der korrekte Ablauf zum Auswählen des gewünschten Datatypes zum Speichern?



Es gibt keinen. Man kann Datatypes nur in dem Format speichern, in dem sie geladen wurden, oder IFF ILBM.

Die o.g. Links beinhalten eine alternative datatypes.library, die eine Auswahl unterstützt. Allerdings ist diese schon ziemlich alt und soviel icht weiß nicht mit OS3.5+ kompatibel.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Antworten - Zitieren - Direktlink - ]

21.10.2004, 17:44 Uhr

bubblebobble
Posts: 707
Nutzer
In der OS3.5 Docu steht drin:

Zitat:
Format Conversion

As long as the objects are sub-classes of the same class, data
from one format can be written out as another format. For
example, it is possible to read in an ILBM file and write out a
JPEG file, since both data types are sub-classes of PICTURE.


Also müsste das doch gehen.
Wahrscheinlich ist es simpel, aber ich komm nicht drauf.
Ein kurzes Codeschnipsel und alles wäre gut.
--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, UDM, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de



[ - Antworten - Zitieren - Direktlink - ]

21.10.2004, 18:00 Uhr

thomas
Posts: 7718
Nutzer
Zitat:
In der OS3.5 Docu steht drin:

Wo genau steht das (in welcher Datei) ?

Zitat:
Also müsste das doch gehen.

Theoretisch ja. Aber wie wählt man den Ausgabe-Datentyp ? Wie bekommt man eine Liste der verfügbaren Datentypen ?

Zitat:
Wahrscheinlich ist es simpel, aber ich komm nicht drauf.

Da bist du nicht alleine.

Zitat:
Ein kurzes Codeschnipsel und alles wäre gut.

Oh ja, bitte, mir auch eins.

Ich habe mir folgendes überlegt, wie es gehen könnte. Es widerspricht allerdings deinem Zitat, denn da ist die Rede davon, daß man eine geladene Datei mit einem anderen Dateityp abspeichern kann.

Also, bei NewDTObject ohne Datei (also mit Bitmap und ggf. Palette) kann man über DTA_Datatype einen Datentyp wählen. Man benötigt dazu eine gültige Datatype-Struktur. Diese könnte man z.B. mit ObtainDataType bekommen. Ich habe das noch nicht ausprobiert aus folgendem Grund: ObtainDataType braucht eine Datei. Man muß also erst eine JPEG-Datei lesen, um ein Bild als JPEG abspeichern zu können.

Das mit der Liste habe ich auch "gelöst", allerdings mit einem üblen Hack: ich habe mir mit ObtainDataType("") einen Datatype geholt. Dann bin ich über die Nodes zum Anfang der Liste gegangen und habe dann die ganze Liste ausgelesen, wobei ich nur Picture-Datatypes berücksichtigt habe. Problem an der Sache ist nur, daß die Nodes eindeutig als private gekennzeichnet sind. Und das Setzen mit DTA_DataType mit einem Datatype aus der Liste hat auch nicht geklappt.

Und es muß ja auch einen Grund geben, warum Roland Mainz seine eigene Version der datatypes.library geschrieben hat. Vermutlich hat er gewußt, daß es nicht geht.

Gruß Thomas
--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Antworten - Zitieren - Direktlink - ]

21.10.2004, 21:50 Uhr

bubblebobble
Posts: 707
Nutzer
@thomas:

Das steht in der Schublade Includes_And_Datatypes_3.5
in dem guide "datatype" under "background".
--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, UDM, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de



[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Bilder Speichern mit Datatypes [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.