![]() |
ENGLISH VERSION |
|
![]() |
Links | | | Forum | | | Kommentare | | | News melden |
![]() |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
![]() |
amiga-news.de Forum > Programmierung > iff24 Speichern? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
16.09.2008, 18:52 Uhr MaikG Posts: 5172 Nutzer |
Wie speichert man die 24 Bit Variante des Formats? BMHD hab ich glaube ich schon kapiert aber wie kommen die Bildpunkte jetzt in die Datei(unkompremiert weils einfacher ist)? [ - Antworten - Zitieren - Direktlink - ] |
16.09.2008, 20:15 Uhr Der_Wanderer Posts: 1229 Nutzer |
Meine Antwort wie immer: in Amiblitz waere das... image_Save{0,"myImage.iff",@"ILBM"} oooder schau dir den Code dazu an. "iff/ilbm.include.bb2". Du musst die 24bit RGB Daten in 24 einzelne Bitplanes verwandeln. Das ist super ineffizient und langsam, deshalb gibt es auch das "DEEP" Format, was aber nicht ganz offiziell ist und nicht unbdingt immer unterstuetzt wird. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
16.09.2008, 21:43 Uhr MaikG Posts: 5172 Nutzer |
24 Bitplanes, für 24 Bit noch Planar speichern? Ich dachte an sowas wie 0xFFFFFF 0xFF0000 0x00FF00 0x0000FF für ein weiss, rot, grün und blauen Punkt. bb2 Dateien, wo immer die auch her ist kann man meistens nicht lesen(kein ASCII). Wie siehts mit Speichern via Datatype aus? Ich habe ein Beispiel dafür gefunden aber nicht so richtig durchgesehen. Weil da würde nie die Datatype selectiert mit dem man Speichern will. [ - Antworten - Zitieren - Direktlink - ] |
16.09.2008, 22:34 Uhr Blackbird Posts: 634 Nutzer |
@MaikG:Zitat: da hast du zwar recht, aber wenn du Ab3 installierst, dir den Source einlädst,kannst du das anschließend auch selbst als ascii speichern und lesen... -- regards Blackbird Have a look at: http://www.blackbird-net.de Skins for PlayCD OS3.9 BlackShoot, Zombies Apocalypse, GalagaWars, VcdImager-Gui,PerfectPaint [ - Antworten - Zitieren - Direktlink - ] |
16.09.2008, 22:47 Uhr Der_Wanderer Posts: 1229 Nutzer |
Zitat:Yup. Zitat:nope. Das wäre IFF-DEEP, kein normales 24bit IFF. Zitat:Man kann alles lesen bis auf die Tokens, und die verwende ich kaum. Die Includes sind ALLE bei der Distribution dabei, die man hier für Umme kriegt und damit die .bb2 Files sogar richtig lesen kann ;-) http://amiblitz3.amiforce.de Zitat:Datatypes unterstützen "nur" IFF-ILBM zum speichern. Und das auch nur zuverlässig in 8bit oder weniger. 24bit crashed zumindest unter OS3.1, OS3.5 und 3.9. Wenn du aber immer noch nicht AB3 herunterladen willst, habe ich dir den Auszug des relevanten Teils mal rauskopiert: - die Routine kann RGB und ARGB, je nachdem ob bitdepth=24 oder 32 ist - sie geht von einem ARGB PixelArray aus in ARGBptr, es sollte aber ein Leichtes sein das zu ändern falls deine Daten in einem anderen Pixelformat vorliegen - die anderen Variablen sollten intuitiv oder aus dem Kontext sein) code:;Bitplanes bit masks #PF_A1 = $01000000 ;Alpha #PF_A2 = $02000000 #PF_A3 = $04000000 #PF_A4 = $08000000 #PF_A5 = $10000000 #PF_A6 = $20000000 #PF_A7 = $40000000 #PF_A8 = $80000000 #PF_R1 = $00010000 ;Red #PF_R2 = $00020000 #PF_R3 = $00040000 #PF_R4 = $00080000 #PF_R5 = $00100000 #PF_R6 = $00200000 #PF_R7 = $00400000 #PF_R8 = $00800000 #PF_G1 = $00000100 ;Green #PF_G2 = $00000200 #PF_G3 = $00000400 #PF_G4 = $00000800 #PF_G5 = $00001000 #PF_G6 = $00002000 #PF_G7 = $00004000 #PF_G8 = $00008000 #PF_B1 = $00000001 ;Blue #PF_B2 = $00000002 #PF_B3 = $00000004 #PF_B4 = $00000008 #PF_B5 = $00000010 #PF_B6 = $00000020 #PF_B7 = $00000040 #PF_B8 = $00000080 ... ; write BODY chunk file_WriteChunk{dos,@"BODY",-1,False} blen.l = (img_width + 15) / 16 * 2 ; byte length for one bitplane line tmp01.l = tmp + 0 * blen tmp02.l = tmp + 1 * blen tmp03.l = tmp + 2 * blen tmp04.l = tmp + 3 * blen tmp05.l = tmp + 4 * blen tmp06.l = tmp + 5 * blen tmp07.l = tmp + 6 * blen tmp08.l = tmp + 7 * blen tmp09.l = tmp + 8 * blen tmp10.l = tmp + 9 * blen tmp11.l = tmp + 10 * blen tmp12.l = tmp + 11 * blen tmp13.l = tmp + 12 * blen tmp14.l = tmp + 13 * blen tmp15.l = tmp + 14 * blen tmp16.l = tmp + 15 * blen tmp17.l = tmp + 16 * blen tmp18.l = tmp + 17 * blen tmp19.l = tmp + 18 * blen tmp20.l = tmp + 19 * blen tmp21.l = tmp + 20 * blen tmp22.l = tmp + 21 * blen tmp23.l = tmp + 22 * blen tmp24.l = tmp + 23 * blen tmp25.l = tmp + 24 * blen tmp26.l = tmp + 25 * blen tmp27.l = tmp + 26 * blen tmp28.l = tmp + 27 * blen tmp29.l = tmp + 28 * blen tmp30.l = tmp + 29 * blen tmp31.l = tmp + 30 * blen tmp32.l = tmp + 31 * blen omax.l = (img_width-1) LSR 4 For y.l = 0 To img_height-1 ; for each line For o.l = 0 To omax ; go for all 16 pixel flag.l = 1 LSL 15 plane01.l = 0 plane02.l = 0 plane03.l = 0 plane04.l = 0 plane05.l = 0 plane06.l = 0 plane07.l = 0 plane08.l = 0 plane09.l = 0 plane10.l = 0 plane11.l = 0 plane12.l = 0 plane13.l = 0 plane14.l = 0 plane15.l = 0 plane16.l = 0 plane17.l = 0 plane18.l = 0 plane19.l = 0 plane20.l = 0 plane21.l = 0 plane22.l = 0 plane23.l = 0 plane24.l = 0 plane25.l = 0 plane26.l = 0 plane27.l = 0 plane28.l = 0 plane29.l = 0 plane30.l = 0 plane31.l = 0 plane32.l = 0 o4.l = o LSL 4 oend.l = Min(o4+15,img_width-1) For x.l = o4 To oend dat.l = Peek.l( ARGBptr + (x*bpp+y*bpr) ) ; red If datPF_R1 Then plane01 | flag If datPF_R2 Then plane02 | flag If datPF_R3 Then plane03 | flag If datPF_R4 Then plane04 | flag If datPF_R5 Then plane05 | flag If datPF_R6 Then plane06 | flag If datPF_R7 Then plane07 | flag If datPF_R8 Then plane08 | flag ; green If datPF_G1 Then plane09 | flag If datPF_G2 Then plane10 | flag If datPF_G3 Then plane11 | flag If datPF_G4 Then plane12 | flag If datPF_G5 Then plane13 | flag If datPF_G6 Then plane14 | flag If datPF_G7 Then plane15 | flag If datPF_G8 Then plane16 | flag ; blue If datPF_B1 Then plane17 | flag If datPF_B2 Then plane18 | flag If datPF_B3 Then plane19 | flag If datPF_B4 Then plane20 | flag If datPF_B5 Then plane21 | flag If datPF_B6 Then plane22 | flag If datPF_B7 Then plane23 | flag If datPF_B8 Then plane24 | flag ; alpha If datPF_A1 Then plane25 | flag If datPF_A2 Then plane26 | flag If datPF_A3 Then plane27 | flag If datPF_A4 Then plane28 | flag If datPF_A5 Then plane29 | flag If datPF_A6 Then plane30 | flag If datPF_A7 Then plane31 | flag If datPF_A8 Then plane32 | flag flag LSR 1 Next o2.l=o LSL 1 Poke.w tmp01+o2,plane01 Poke.w tmp02+o2,plane02 Poke.w tmp03+o2,plane03 Poke.w tmp04+o2,plane04 Poke.w tmp05+o2,plane05 Poke.w tmp06+o2,plane06 Poke.w tmp07+o2,plane07 Poke.w tmp08+o2,plane08 Poke.w tmp09+o2,plane09 Poke.w tmp10+o2,plane10 Poke.w tmp11+o2,plane11 Poke.w tmp12+o2,plane12 Poke.w tmp13+o2,plane13 Poke.w tmp14+o2,plane14 Poke.w tmp15+o2,plane15 Poke.w tmp16+o2,plane16 Poke.w tmp17+o2,plane17 Poke.w tmp18+o2,plane18 Poke.w tmp19+o2,plane19 Poke.w tmp20+o2,plane20 Poke.w tmp21+o2,plane21 Poke.w tmp22+o2,plane22 Poke.w tmp23+o2,plane23 Poke.w tmp24+o2,plane24 Poke.w tmp25+o2,plane25 Poke.w tmp26+o2,plane26 Poke.w tmp27+o2,plane27 Poke.w tmp28+o2,plane28 Poke.w tmp29+o2,plane29 Poke.w tmp30+o2,plane30 Poke.w tmp31+o2,plane31 Poke.w tmp32+o2,plane32 Next If compress For o.l = 0 To bitdepth-1 blenC.l = ilbm_RLEncode{tmp+blen*o,tmpC,blen} If blenC>0 file_WriteMem {dos,tmpC,blenC} End If Next Else file_WriteMem {dos,tmp,blen*bitdepth} End If Next file_CloseChunk{dos,@"BODY"} P.S: Ja, ich weiss dass es Arrays gibt. Hier geht es nicht um Esthetik, sondern um Speed. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 16.09.2008 um 22:51 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 08:50 Uhr thomas Posts: 7719 Nutzer |
Zitat: Dann hast du's nicht richtig gemacht. Wenn ein 24bit-Datatype installiert ist (also auf jeden Fall unter 3.5 und 3.9) funktioniert das Speichern von 24bit-Daten einwandfrei. Die Datatypes kommen nur mit 15/16bit-Daten nicht zurecht, die muß man erst auf 24bit umrechnen. Aber abstürzen tut da trotzdem nichts. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 10:33 Uhr Der_Wanderer Posts: 1229 Nutzer |
@thomas Was mache ich falsch? code:Function.l image_SaveDT{image.l,filename.s} SHARED imagedat() DEFTYPE.dtWrite DTMW succ.l=False If ARGBbitmap_ptr *DTPic._Object = NewDTObjectA_ (0,Tags(#DTA_SourceType,#DTST_RAM,@@ #PDTA_DestMode,#PMODE_V43,@@ #DTA_GroupID,#GID_PICTURE,@@ #PDTA_Remap,0,@@ #PDTA_ModeID,0,@@ #PDTA_NumColors,0,@@ #PDTA_BitMap,ARGBbitmap_ptr)) If *DTPic GetDTAttrsA_ *DTPic,Tags(#PDTA_BitMapHeader,&*bmhd.BitMapHeader) If *bmhd *bmhdbmh_Width = img_width *bmhdbmh_Height = img_height *bmhdbmh_Depth = 24 End If fh.l = Open_ (&filename.s,#MODE_NEWFILE) If fh DTMWMethodID = #DTM_WRITE DTMWdtw_GInfo = 0 DTMWdtw_FileHandle = fh DTMWdtw_Mode = #DTWM_IFF DTMWdtw_AttrList = 0 succ = DoDTMethodA_(*DTPic,0,0,&DTMW) Close_ fh If succ = False error{"\__THIS_FUNCTION: Unable to write IFF!"} EndIf EndIf DisposeDTObject_ *DTPic ARGBbitmap_ptr = 0; we must NULL the bitmap Else error{"\__THIS_FUNCTION: Unable to create Datatype Object out of the bitmap!"} EndIf Else error{"\__THIS_FUNCTION: No bitmap!"} End If Function Return succ End Function Als Fehlermeldung bekomme ich "Unable to write IFF!", also DoDTMethodA_(*DTPic,0,0,&DTMW) schlägt fehl. BTW, kann man verhindern dass die Bitmap bei DisposeDTObject freigegeben wird? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 10:54 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 12:03 Uhr thomas Posts: 7719 Nutzer |
@Der_Wanderer: Welches Pixelformat hat die Bitmap denn ? Wie gesagt, das muß PIXFMT_RGB24 sein, sonst geht es nicht. Kann auch sein, daß die ModeID dazu passen muß, das weiß ich aber nicht sicher. Mein Code setzt auch noch XAspect, YAspect, PageWidth und PageHeight im BitMapHeader, aber das ist glaube ich nur, damit Programme wie PPaint das Bild korrekt laden. Zitat: Das ist doch kein Crash ! Zitat: Es gibt ein PDTA_FreeSourceBitMap. Ich habe aber noch nicht ausprobiert, ob das was bewirkt. Da man die Bitmap in den meisten Fällen eh nach 24bit konvertieren muß, habe ich immer eine temporäre angelegt. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 12:24 Uhr Der_Wanderer Posts: 1229 Nutzer |
Zitat:Die Bitmap ist PIXFMT_ARGB32, die der Name ARGBBitmap_ptr vermuten lässt ;-) Dann wirds wohl daran liegen. Werde es vorher konvertieren. D.h. es geht aber auch kein alpha Channel :-( Zitat:Ok, danke für den Hinweis. so weit war ich nur noch nie... Zitat:Ja, das ist kein Crash. Crashs bekam ich aber früher, evtl. lags aber auch an meinem Code. Sorry, habe da wohl übertrieben.Zitat: Zitat:aha, danke.Zitat: Zitat: Ja, das ist dämlich. Der Vorteil von meinem Code ist, er kann auch ARGB speichern und benötigt lediglich eine Zeile als temporären Buffer. Manchmal geht es einfach nicht, eine Bitmap zweimal im Speicher zu halten, wenn es gosse Bilder sind. Das macht dann auch den VMem Approach vom Zeichenprogramm zunixhte. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 12:25 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 14:09 Uhr Der_Wanderer Posts: 1229 Nutzer |
@Thomas Auch das hier geht nicht, sollte doch aber, oder? code:... *newbm.BitMap = AllocBitMap_(img_width,img_height,24,@@ #BMF_MINPLANES|#BMF_SPECIALFMT|(#PIXFMT_RGB24 LSL #BMB_PIXFMT_SHIFTUP) ,0) If *newbm=0 Then error{"\__THIS_FUNCTION: Unable to allocate 24bit Bitmap!"} *DTPic._Object = NewDTObjectA_ (0,Tags(#DTA_SourceType ,#DTST_RAM,@@ #PDTA_DestMode ,#PMODE_V43,@@ #PDTA_SourceMode ,#PMODE_V43,@@ #PDTA_BitMap ,*newbm,@@ #DTA_GroupID ,#GID_PICTURE)) If *DTPic GetDTAttrsA_ *DTPic,Tags(#PDTA_BitMapHeader,&*bmhd.BitMapHeader) If *bmhd *bmhdbmh_Width = img_width *bmhdbmh_Height = img_height *bmhdbmh_Depth = 24 End If fh.l = Open_ (&filename.s,#MODE_NEWFILE) If fh DTMWMethodID = #DTM_WRITE DTMWdtw_GInfo = 0 DTMWdtw_FileHandle = fh DTMWdtw_Mode = #DTWM_IFF DTMWdtw_AttrList = 0 succ = DoDTMethodA_(*DTPic,0,0,&DTMW) Close_ fh If succ = False error{"\__THIS_FUNCTION: Unable to write IFF!"} EndIf EndIf DisposeDTObject_ *DTPic succ = DoDTMethodA_(*DTPic,0,0,&DTMW) scheitert wieder, und erzeugt auch keine IFF Datei, sondern eine Datei der Länge 0. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 16:48 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 15:14 Uhr thomas Posts: 7719 Nutzer |
@Der_Wanderer: PDTA_SourceMode ist Quatsch. Wenn du das wegmachst, dann geht's. Zitat: Die Datei wird durch den Open erzeugt, nicht durch die Methode. Die Methode schreibt einfach nichts. Wenn succ 0 ist, solltest du die Datei löschen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 15:29 Uhr Der_Wanderer Posts: 1229 Nutzer |
Geht auch ohne PDTA_SourceMode nicht. (wobei das laut Docu notwenig ist, wenn man als Quelle eine non-standard Bitmap angeben will, also das Pendant zu PDTA_DestMode) Die Bitmap wird aber angelegt, daran liegts nicht. Ich kann mich erinnern, dass wir schonmal einen Thread darüber hatten, da gibt es aber auch nicht. Der Code geht jetzt aber auch nicht mit 8bit, vorher hatte ich das mal geschafft dass 8bit ging. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 15:54 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
17.09.2008, 20:33 Uhr thomas Posts: 7719 Nutzer |
Zitat: Seltsam. Ich habe genau dein Beispiel benutzt, 1:1 nach C übersetzt und dann solange probiert, bis es funktionierte. Am Ende hing es nur am SourceMode. Wenn das drin war, dann ging's nicht und wenn's draußen war, dann ging's. Schau dir mal dieses Beispiel an: http://thomas-rapp.homepage.t-online.de/examples/savewin.c Das funktioniert auf allen mir bekannten Plattformen. Hab's gerade nochmal getestet. Bei <= 8bit mußt du eine ModeID angeben. Mit den Tags muß man immer ein bißchen nach Gefühl entscheiden, welche für NewDTObject überhaupt relevant sind. Die Dokumentation schweigt sich darüber leider aus. Viele sind einfach nur für die Kommunikation zwischen Sub-Klasse (also ilbm, jpeg, gif etc.) und picture.datatype gedacht, die braucht man im Anwendungsprogramm überhaupt nicht. PDTA_SourceMode ist eins davon, soviel ich weiß. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
18.09.2008, 12:21 Uhr Der_Wanderer Posts: 1229 Nutzer |
@thomas: Danke für das Beispiel. Im Prinzip mache ich das genauso, das hat mich grübeln lassen... Dann habe ich das Datatpye von AfA entfernt und es geht! D.h. das AROS Datatype kann nicht speichern, zumindest nicht 24bit. Das OS3.9 kann definitiv speichern. Das werde ich mal bei Bernd anmelden. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
18.09.2008, 13:08 Uhr thomas Posts: 7719 Nutzer |
@Der_Wanderer: Also ich habe gestern abend OS 3.1 ohne und mit Grafikkarte, OS 3.9 mit Grafikkarte, OS 4.0 und MorphOS ausprobiert und die gingen alle. AfA habe ich nicht getestet. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
19.09.2008, 11:30 Uhr Der_Wanderer Posts: 1229 Nutzer |
@MaikG Sorry dass ich den Thread etwas benutzt habe, dafür hast du nun Basic Code um "per Hand" zu speichern sowie via Datatype, mit der Einschränkung, dass es auf AfA Systemen vorerst nicht geht. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
19.09.2008, 22:39 Uhr MaikG Posts: 5172 Nutzer |
Ist kein Problem, habe beides versucht in MBasic zu übersetzen. Das mit den Datatype scheint mir einfacher. Allerdings haut da irgendwas noch nicht hin: code:Datei$="ram:test" workbuf& = AllocVec& (1024, MEMF_PUBLIC& OR MEMF_CLEAR&) IF workbuf& THEN TAGLIST workbuf&, _ DTA_SourceType&, DTST_RAM&, _ DTA_GroupID&, GID_PICTURE&, _ PDTA_BitMap&, bm&, _ PDTA_DestMode&, 1&, _ TAG_END& dtobjekt& = NewDTObjectA& (NULL&, workbuf&) IF dtobjekt& THEN TAGLIST workbuf&, _ PDTA_BitMapHeader&, VARPTR(bmheader&), _ PDTA_BitMap&, VARPTR(bitmapadr&), _ TAG_END& IF GetDTAttrsA& (dtobjekt&, workbuf&) THEN POKEW bmheader&+bmh_Width%, 1600 POKEW bmheader&+bmh_Height%,1200 POKEB bmheader&+bmh_Depth%,24 POKEB bmheader&+bmh_XAspect%,22 POKEB bmheader&+bmh_YAspect%,22 POKEW bmheader&+bmh_PageWidth%, 1600 POKEW bmheader&+bmh_PageHeight%,1200 END IF Datei& = xOpen&(SADD(Datei$ + CHR$(0)), MODE_NEWFILE&) IF Datei& THEN gplayout& = AllocVec&(gpLayout_sizeof%, MEMF_PUBLIC& OR MEMF_CLEAR&) IF gplayout& THEN POKEL gplayout& + gpLayoutMethodID%, DTM_WRITE& POKEL gplayout& + gpl_GInfo%, NULL& POKEL gplayout& + dtw_FileHandle%, Datei& POKEL gplayout& + dtw_Mode%, DTWM_IFF& POKEL gplayout& + dtw_AttrList%, NULL& IF DoDTMethodA& (dtobjekt&, NULL&, NULL&, gplayout&) THEN fail%=1 END IF junk&=xClose&(Datei&) END IF DisposeDTObject dtobjekt& END IF FreeVec workbuf& END IF Da kommt ein Gelber "Recoverable Alert" [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > iff24 Speichern? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
![]() |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2025 by amiga-news.de - alle Rechte vorbehalten. |
![]() |