amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > moeglichkeiten ein image zu laden [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2012-01-12, 21:20 h

PeaBrain
Posts: 265
User
hallo,

welche moeglichkeiten und libraries gibt es unter amigaos um images zu laden?
am besten aller art, wie jpg oder bmp oder tga's.
dann moechte ich gerne noch auf die rohdaten zugreifen koennen, um sie zum beispiel in opengl zu nutzen.

danke und beste gruesse,
peabrain

[ - Answer - Quote - Direct link - ]

2012-01-12, 21:39 h

Polluks
Posts: 105
User
Die perfekte Lösung heißt http://aminet.net/package/util/libs/dtimage
habe ich in meinen OpenGL-Ports genutzt: alle Datatypes + raw

--
Pegasos II G4, MorphOS 2.7, Zalman M220W
Power Mac G3, OSX 10.3

[ Dieser Beitrag wurde von Polluks am 12.01.2012 um 21:53 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2012-01-12, 21:40 h

Thore
Posts: 2266
User
Du kannst das Datatypes System ab OS3.x verwenden. Das ist dann auch "aller Art". Sprich, sobald ein entsprechendes DT auf dem System verfügbar ist, kann dein Programm dieses automatisch laden.

[ - Answer - Quote - Direct link - ]

2012-01-13, 09:48 h

PeaBrain
Posts: 265
User
danke :) gibt es die libpng und die libjpeg nicht schon im sdk?
ich glaub ich hab sowas gesehen.

[ - Answer - Quote - Direct link - ]

2012-01-13, 16:40 h

ZeroG
Posts: 1487
User
@PeaBrain:
Keine Ahnung ob die noch dabei sind, aber wenn sinds relativ alte Versionen. Such mal im OS4Depot da wirst du fündig.

[ - Answer - Quote - Direct link - ]

2012-01-13, 21:35 h

AGSzabo
Posts: 1663
User
@Polluks:

Wenn ich es richtig verstanden habe, geht diese perfekte Lösung über Datatypes. Aber so weit ich weiß, unterstützt Datatypes keinen Alphakanal. Wie geht das also? Ich würde gerne allgemein PNG Images mit Transparenzen für Toolbuttons und andere Gadgets in meinem GUI nutzen. Gibt es da einen Weg? Mit BlitBitmapRastport() geht's wohl nicht. hmm ... WritePixelArray()? Derzeit verwende ich Icons.
--
Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system.

[ Dieser Beitrag wurde von AGSzabo am 13.01.2012 um 21:37 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2012-01-13, 22:17 h

PeaBrain
Posts: 265
User
da ich opengl benutze hoffe ich, dass die libpng auch den alphakanal unterstutzen. ist nur ne doofe einschaenkung fuer den grafiker, wenn er nur png's benutzen kann.

[ - Answer - Quote - Direct link - ]

2012-01-14, 17:37 h

Thore
Posts: 2266
User
Wenn Du OS4 benutzt, kannst Du auch die datatypes nehmen und PDTM_READPIXELARRAY, damit dürfte bei PNG auch der Alpha Channel beibehalten werden.

[ - Answer - Quote - Direct link - ]

2012-01-15, 08:57 h

akl
Posts: 265
User
@AGSzabo:
>Aber so weit ich weiß, unterstützt Datatypes keinen Alphakanal.
Doch.

[ - Answer - Quote - Direct link - ]

2012-01-15, 09:59 h

AGSzabo
Posts: 1663
User
@akl:

Aber nur ab OS4, oder? Und womit bekäme ich dann das Bild richtig ins Blickfeld kopiert?
--
Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system.

[ - Answer - Quote - Direct link - ]

2012-01-15, 13:57 h

Polluks
Posts: 105
User
@AGSzabo:
Die Kombination PDTM_READPIXELARRAY mit PBPAFMT_ARGB gilt auf für MorphOS und AROS.
--
Pegasos II G4, MorphOS 2.7, Zalman M220W
Power Mac G3, OSX 10.3

[ Dieser Beitrag wurde von Polluks am 15.01.2012 um 13:59 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2012-01-16, 10:26 h

akl
Posts: 265
User
@AGSzabo:
Nein, auch unter 68k - beispielsweise nutzt AmiKit das entsprechende Feature von akPNG in Verbindung mit einem picture.datatype oberhalb V43 und AfA. Das Blitten/Rendern ist aber sowieso nachgelagert, egal wie das Bild geladen wurde - oder würdest Du den picture.datatype das Rendering übernehmen lassen wollen?

[ - Answer - Quote - Direct link - ]

2012-01-16, 11:11 h

Der_Wanderer
Posts: 1229
User
Alphakanal geht erst unter OS4, MOS, AROS oder wenn man AfA+Datatype Replacement hat. Wenn also 68K als Zielplatform mit drin sein soll, kannst du Datatypes nicht nehmen.
Ich habe mir für den Zweck einen eigenen PNG Codec geschrieben. Ist blöd und Zeitverschwendung, ich weis, aber anders geht es nicht.
Wenn man C benutzt kann man auch PNG als static library einbinden.

Auch bei Icons kommt man nur beschwerlich an die Rohdaten (CMIIW).
Ich nutze da den Trick, das Icon einmal auf weis (0xFFFFFF) und einmal auf schwarz (0x000000) malen zu lassen (DrawIconState), dann ziehe ich die beiden Bitmaps voneinander ab. Das Ergebnis ist dann der (invertierte) Alphakanal.
Die 3 Farbkanäle bekommt man dann von dem schwarzen Bild, indem man die Farbe durch den Alphawert dividiert. (bei 0 muss man natürlich auf eine Farbe ausweichen, z.B. schwarz).
Nebeneffekt: so kommt man ohne Fallunterscheidung an alle Icons und bekommt einen Alphakanal, egal ob PNG Icons, GlowIcons, 4-Farb Icons etc.)

Zum Blitten:
OS3.x hat dafür keinen Befehl. OS4, MOS, AROS und AfA haben da wohl was (WritePixelArrayAlpha ??)
Händisch:
Zielbitmap mit ReadPixelArray in einen temporären Buffer lesen, Bildchen draufmalen per Hand (for (x=0; x<w; x++) ...) und mit WritePixelArray wieder zurückschicken.

Datatypes würde ich das Rendern nicht überlassen, sonst wirds bei vielen Usern nicht korrekt aussehen. Eines der Nachteile von Datatpyes ist, dass es viele verschiedene, mehr oder weniger vollständige Implementierungen gibt, sodass man nie wirklich sagen kann, was passieren wird.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 16.01.2012 um 11:17 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2012-01-17, 09:46 h

akl
Posts: 265
User
@Der_Wanderer:
Ich meine mich zu erinnern, dass es auch ohne AfA mit einem bestimmten picture.datatype unter 68k gegangen ist - aber leider ist exakt diese uneinheitliche Landschaft bzw. API-Fragmentierung der Grund, warum es einerseits keinen großen Spaß mehr macht, für die Plattform zu entwickeln und warum es andererseits auch nicht mehr ohne zahlreiche "proprietäre" Workarounds geht.

[ - Answer - Quote - Direct link - ]

2012-01-17, 09:56 h

PeaBrain
Posts: 265
User
ok, es hoert sich alles ein wenig kompliziert an.
aber ich habe im aminet eine libpng fuer 68k gefunden und ich hoffe, ich kann die auch unter os4.1 compilieren.
mir gehts ja nur ums reinladen. die daten werden ja dann eh unter opengl verwendet :)
und unter 68k muss ich mir noch ueberlegen, wie ich das darstelle. aber da ich n ppc und ne graka fuer meinen 1200er habe, wird es wohl erstmal keinen softwaremodus geben. sprich kein aga.

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > moeglichkeiten ein image zu laden [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.