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

amiga-news.de Forum > Programmierung > moeglichkeiten ein image zu laden [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

12.01.2012, 21:20 Uhr

PeaBrain
Posts: 265
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]

12.01.2012, 21:39 Uhr

Polluks
Posts: 105
Nutzer
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. ]

[ - Antworten - Zitieren - Direktlink - ]

12.01.2012, 21:40 Uhr

Thore
Posts: 2266
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

13.01.2012, 09:48 Uhr

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

[ - Antworten - Zitieren - Direktlink - ]

13.01.2012, 16:40 Uhr

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

[ - Antworten - Zitieren - Direktlink - ]

13.01.2012, 21:35 Uhr

AGSzabo
Posts: 1663
Nutzer
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

13.01.2012, 22:17 Uhr

PeaBrain
Posts: 265
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

14.01.2012, 17:37 Uhr

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

[ - Antworten - Zitieren - Direktlink - ]

15.01.2012, 08:57 Uhr

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

[ - Antworten - Zitieren - Direktlink - ]

15.01.2012, 09:59 Uhr

AGSzabo
Posts: 1663
Nutzer
@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.

[ - Antworten - Zitieren - Direktlink - ]

15.01.2012, 13:57 Uhr

Polluks
Posts: 105
Nutzer
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

16.01.2012, 10:26 Uhr

akl
Posts: 265
Nutzer
@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?

[ - Antworten - Zitieren - Direktlink - ]

16.01.2012, 11:11 Uhr

Der_Wanderer
Posts: 1229
Nutzer
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. ]

[ - Antworten - Zitieren - Direktlink - ]

17.01.2012, 09:46 Uhr

akl
Posts: 265
Nutzer
@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.

[ - Antworten - Zitieren - Direktlink - ]

17.01.2012, 09:56 Uhr

PeaBrain
Posts: 265
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > moeglichkeiten ein image zu laden [ - Suche - Neue Beiträge - Registrieren - Login - ]


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