Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bilder Laden und speichern

5 views
Skip to first unread message

Hermann Riemann

unread,
May 18, 2013, 8:00:50 AM5/18/13
to
Für einige Grafikanwendungen
lade ich Bilder verschiedener Formate
(*.png *.jpg *.gif) In Felder vom Typ *.int
modifiziere sie,
zeige eventuell Bilder oder Ausschnitte im Fenster,
und speichere sie nach *.bmp ab,
von wo aus ich sie mit einem anderen Programm
meist nach *.png konvertiere.
Dazu habe ich bisher SDL und Programme aus netpbm verwendet
Die Bilder habe ich bisher mit der SDL-Funktion IMG_Load geladen,
finde aber die eigentlich benötigte SDL_image.h nicht mehr bei SuSE 12.3

Hermann
der sich gerade überlegt,
eine RAM-disk anzulegen,
um die Bilder von und nach *.bmp zu konvertieren.

--
http://www.Hermann-Riemann.de

Hermann Riemann

unread,
May 19, 2013, 6:26:14 AM5/19/13
to
Für einige Grafikanwendungen
lade ich Bilder verschiedener Formate
(*.png *.jpg *.gif) In Felder vom Typ (int *)pointer
modifiziere sie,
zeige eventuell Bilder oder Ausschnitte im Fenster,
und speichere sie nach *.bmp ab,
von wo aus ich sie mit einem anderen Programm
meist nach *.png konvertiere.
Dazu habe ich bisher SDL und Programme aus netpbm verwendet.
Die Bilder habe ich bisher mit der SDL-Funktion IMG_Load geladen.
SDL hat außerdem den Vorteil,
das Joystickeingaben, Sondertasten bei Maus und Tastatur
für Bildbearbeitung leicht erfassbar sind.

Jetzt habe ich SuSE 12.3 und da fehlte SDL_image.h.
Das Paket SDL_image-devel-1.2.12-1.x86_64.rpm war mit SuSE nicht
auffindbar und daher habe ich dieses Paket
über http://www.libsdl.org geholt.

Der Aufruf von IMG_Load liefert allerdings
statt einem Pointer die Fehlermeldung:
"Resource temporarily unavailable".

Hermann
der sich gerade als Übergang erwägt,

Rainer Weikusat

unread,
May 19, 2013, 9:27:09 AM5/19/13
to
Hermann Riemann <nospam...@hermann-riemann.de> writes:
> F�r einige Grafikanwendungen
> lade ich Bilder verschiedener Formate
> (*.png *.jpg *.gif) In Felder vom Typ (int *)pointer
> modifiziere sie,
> zeige eventuell Bilder oder Ausschnitte im Fenster,
> und speichere sie nach *.bmp ab,
> von wo aus ich sie mit einem anderen Programm
> meist nach *.png konvertiere.
> Dazu habe ich bisher SDL und Programme aus netpbm verwendet.
> Die Bilder habe ich bisher mit der SDL-Funktion IMG_Load geladen.
> SDL hat au�erdem den Vorteil,
> das Joystickeingaben, Sondertasten bei Maus und Tastatur
> f�r Bildbearbeitung leicht erfassbar sind.
>
> Jetzt habe ich SuSE 12.3 und da fehlte SDL_image.h.
> Das Paket SDL_image-devel-1.2.12-1.x86_64.rpm war mit SuSE nicht
> auffindbar und daher habe ich dieses Paket
> �ber http://www.libsdl.org geholt.
>
> Der Aufruf von IMG_Load liefert allerdings
> statt einem Pointer die Fehlermeldung:
> "Resource temporarily unavailable".

Das ist die System-Fehlernachricht fuer EAGAIN. strace sollte hier
Aufschluss darueber geben, welcher Systemaufruf genau
fehlschlaegt.

Rainer Weikusat

unread,
May 20, 2013, 7:13:39 AM5/20/13
to
Rainer Weikusat <rwei...@mssgmbh.com> writes:
> Hermann Riemann <nospam...@hermann-riemann.de> writes:

[...]

>> Die Bilder habe ich bisher mit der SDL-Funktion IMG_Load geladen.
>> SDL hat au�erdem den Vorteil,
>> das Joystickeingaben, Sondertasten bei Maus und Tastatur
>> f�r Bildbearbeitung leicht erfassbar sind.
>>
>> Jetzt habe ich SuSE 12.3 und da fehlte SDL_image.h.
>> Das Paket SDL_image-devel-1.2.12-1.x86_64.rpm war mit SuSE nicht
>> auffindbar und daher habe ich dieses Paket
>> �ber http://www.libsdl.org geholt.
>>
>> Der Aufruf von IMG_Load liefert allerdings
>> statt einem Pointer die Fehlermeldung:
>> "Resource temporarily unavailable".
>
> Das ist die System-Fehlernachricht fuer EAGAIN. strace sollte hier
> Aufschluss darueber geben, welcher Systemaufruf genau
> fehlschlaegt.

Hierzu koennte man noch anmerken, das EAGAIN im gegebenen Kontext
eigentlich keinen Sinn hat. Ist es sicher, das der Funktionsaufruf
tatsaechlich fehlschlug? Oder koennte das vielleicht ein Wert sein,
der aus sonstwas fuer Gruenden zu diesem Zeitpunkt in errno
gespeichert ist und faelschlicherweise fuer einen IMG_Load-Fehlercode
gehalten wurde? Dh, sieht der Code vielleicht ungefaehr so aus:

img = IMG_load(...);
if (errno) {
perror("Run for your life!");
return NULL;
}

Wenn ja, waere das ein Fehler in der Fehlerbehandlung: 'errno' hat
grundsaetzlich nur dann eine Bedeutung wenn auf anderem Wege das
Auftreten eines Fehlers signalisiert wurde.

Hermann Riemann

unread,
May 20, 2013, 7:56:53 AM5/20/13
to
Rainer Weikusat schrieb:

>> Der Aufruf von IMG_Load liefert allerdings
>> statt einem Pointer die Fehlermeldung:
>> "Resource temporarily unavailable".

> strace sollte hier Aufschluss darueber geben,
> welcher Systemaufruf genau fehlschlaegt.

Das logfile Protokoll von strace führt bei mir zur Vermutung
dass /diverses/libjpeg.so.62 vergeblich gesucht wurde.
Bei mir zeigt find nur /diverses/libjpeg.so.8

Vorher wurde noch vergeblich versucht
$HOME/.Xdefaults-(mein_PC_Name).site zu öffnen.

Hermann
der mittlerweile bemerkt hat dass auch andere
gleichartige jpeg Bibliotheksprobleme haben.

--
http://www.Hermann-Riemann.de

Rainer Weikusat

unread,
May 20, 2013, 9:52:47 AM5/20/13
to
Hermann Riemann <nospam...@hermann-riemann.de> writes:
> Rainer Weikusat schrieb:
>>> Der Aufruf von IMG_Load liefert allerdings
>>> statt einem Pointer die Fehlermeldung:
>>> "Resource temporarily unavailable".
>
>> strace sollte hier Aufschluss darueber geben,
>> welcher Systemaufruf genau fehlschlaegt.
>
> Das logfile Protokoll von strace f�hrt bei mir zur Vermutung
> dass /diverses/libjpeg.so.62 vergeblich gesucht wurde.
> Bei mir zeigt find nur /diverses/libjpeg.so.8

Das ist jedenfalls nicht die Ursache fuer EAGAIN und libjpeg gehoert
laut

http://wiki.libsdl.org/moin.fcg/FAQLinux#How_do_I_get_all_the_dependencies_for_building_SDL_on_Ubuntu.3F

auch nicht die den 'libSDL Abhaengigkeiten' (bloede Uebersetztung
...). Ueberhaupt sind hier nur Fehler interessant, die tatsaechlich
waehrend dem SDL-Aufruf selber stattfanden. Im Zweifelsfall koenntest
Du unmittlerbar davor etwas in den Code einfuegen, was man in der
strace-Ausgabe leicht findet, zB

open("/no/such/file", O_RDWR, 0);



Stefan Reuther

unread,
May 20, 2013, 10:45:52 AM5/20/13
to
Rainer Weikusat wrote:
> Hermann Riemann <nospam...@hermann-riemann.de> writes:
>>Rainer Weikusat schrieb:
>>>>Der Aufruf von IMG_Load liefert allerdings
>>>>statt einem Pointer die Fehlermeldung:
>>>>"Resource temporarily unavailable".
>>
>>>strace sollte hier Aufschluss darueber geben,
>>>welcher Systemaufruf genau fehlschlaegt.
>>
>>Das logfile Protokoll von strace f�hrt bei mir zur Vermutung
>>dass /diverses/libjpeg.so.62 vergeblich gesucht wurde.
>>Bei mir zeigt find nur /diverses/libjpeg.so.8
>
> Das ist jedenfalls nicht die Ursache fuer EAGAIN und libjpeg gehoert
> laut
>
> http://wiki.libsdl.org/moin.fcg/FAQLinux#How_do_I_get_all_the_dependencies_for_building_SDL_on_Ubuntu.3F
>
> auch nicht die den 'libSDL Abhaengigkeiten' (bloede Uebersetztung
> ...).

IMG_Load ist libSDL_image, und die l�dt bei Bedarf dynamisch libjpeg nach.

Fehler melden die SDL-Bibliotheken ansonsten meistens per SDL_SetError /
SDL_GetError, also w�rde ich zur Diagnose eher diese als errno auswerten.


Stefan

Rainer Weikusat

unread,
May 20, 2013, 12:49:54 PM5/20/13
to
Falls das das Problem ist, waere EAGAIN in jedem Fall 'Zufall'. Man
muesste dann entweder 'irgendwie' die benoetigten
Bildformat-Bibliotheken (libjpeg v6.2, libpng v3, libtiff v3) auch
noch installieren oder die SDL-Bibliothek aus den Quellen bauen damit
sie gegen eventuelle neuere Versionen (wie zB libjpeg v8) gelinkt wird
(und bezueglich 'funktioniert das dann auch' auf sein Glueck bauen).

Hermann Riemann

unread,
May 20, 2013, 12:52:45 PM5/20/13
to
Rainer Weikusat schrieb:

>>>> Der Aufruf von IMG_Load liefert allerdings
>>>> statt einem Pointer die Fehlermeldung:
>>>> "Resource temporarily unavailable".

>>> strace sollte hier Aufschluss darueber geben,
>>> welcher Systemaufruf genau fehlschlaegt.

>> Das logfile Protokoll von strace führt bei mir zur Vermutung
>> dass /diverses/libjpeg.so.62 vergeblich gesucht wurde.
>> Bei mir zeigt find nur /diverses/libjpeg.so.8

> Das ist jedenfalls nicht die Ursache fuer EAGAIN und libjpeg gehoert
> laut
>
http://wiki.libsdl.org/moin.fcg/FAQLinux#How_do_I_get_all_the_dependencies_for_building_SDL_on_Ubuntu.3F

Ubuntu, welche mit *.deb arbeitet, ist anders,
als das von mir verwendete SuSE,
welches mit *rpm arbeitet
und Abhängigkieten eigentlich kennen müsste.

> auch nicht die den 'libSDL Abhaengigkeiten' (bloede Uebersetztung
> ...).

Nachdem ich ( nach etlicher Suche )
libjeg62-62.0.0-15.5.1.x86-64.rpm installiert habe,
war eine der erforderlichen Bibliotheken da,
und das Bild wurde korrekt geladen.

Hermann
der jetzt an einem Speicherzugriffsfehler
vermutlich infolge von fehlender libpng.so.3 rätselt
und vermutlich bei fast? jedem Format
Vergleichbares erleben wird.

--
http://www.Hermann-Riemann.de

Rainer Weikusat

unread,
May 20, 2013, 1:00:39 PM5/20/13
to
Hermann Riemann <nospam...@hermann-riemann.de> writes:
> Rainer Weikusat schrieb:
>
>>>>> Der Aufruf von IMG_Load liefert allerdings
>>>>> statt einem Pointer die Fehlermeldung:
>>>>> "Resource temporarily unavailable".
>
>>>> strace sollte hier Aufschluss darueber geben,
>>>> welcher Systemaufruf genau fehlschlaegt.
>
>>> Das logfile Protokoll von strace f�hrt bei mir zur Vermutung
>>> dass /diverses/libjpeg.so.62 vergeblich gesucht wurde.
>>> Bei mir zeigt find nur /diverses/libjpeg.so.8
>
>> Das ist jedenfalls nicht die Ursache fuer EAGAIN und libjpeg gehoert
>> laut
>>
> http://wiki.libsdl.org/moin.fcg/FAQLinux#How_do_I_get_all_the_dependencies_for_building_SDL_on_Ubuntu.3F
>
> Ubuntu, welche mit *.deb arbeitet, ist anders,
> als das von mir verwendete SuSE,
> welches mit *rpm arbeitet
> und Abh�ngigkieten eigentlich kennen m�sste.

Spielt hier keine Rolle.

Hermann Riemann

unread,
May 20, 2013, 2:00:59 PM5/20/13
to
Rainer Weikusat schrieb:

> Falls das das Problem ist, waere EAGAIN in jedem Fall 'Zufall'. Man
> muesste dann entweder 'irgendwie' die benoetigten
> Bildformat-Bibliotheken (libjpeg v6.2, libpng v3, libtiff v3) auch
> noch installieren oder die SDL-Bibliothek aus den Quellen bauen damit
> sie gegen eventuelle neuere Versionen (wie zB libjpeg v8) gelinkt wird
> (und bezueglich 'funktioniert das dann auch' auf sein Glueck bauen).

Ich habe den eigentlichen Fehler gefunden:
ich habe eine ältere Version von SDL_image-devel installiert,
die nicht mit SDL_image zusammenpasste.

EAGAIN war schon korrekt, Bibliothek nicht gefunden.
strace hat jedenfalls die Suche nach passende Bibliotheken gut angezeigt
inklusive den Anmerkungen (No such file or directory)

Hermann
der nicht sicher ist,
ob derartige Inkompatibilitäten
auch durch (automatische) updates geschehen können.

--
http://www.Hermann-Riemann.de

Rainer Weikusat

unread,
May 20, 2013, 2:55:07 PM5/20/13
to
Hermann Riemann <nospam...@hermann-riemann.de> writes:
> Rainer Weikusat schrieb:
>> Falls das das Problem ist, waere EAGAIN in jedem Fall 'Zufall'. Man
>> muesste dann entweder 'irgendwie' die benoetigten
>> Bildformat-Bibliotheken (libjpeg v6.2, libpng v3, libtiff v3) auch
>> noch installieren oder die SDL-Bibliothek aus den Quellen bauen damit
>> sie gegen eventuelle neuere Versionen (wie zB libjpeg v8) gelinkt wird
>> (und bezueglich 'funktioniert das dann auch' auf sein Glueck bauen).
>
> Ich habe den eigentlichen Fehler gefunden:
> ich habe eine �ltere Version von SDL_image-devel installiert,
> die nicht mit SDL_image zusammenpasste.
>
> EAGAIN war schon korrekt, Bibliothek nicht gefunden.

EAGAIN bedeutet das eine I/O-Operation auf einem Filedeskriptor in
'nichtblockierendem Modus' nicht sofort ausgefuehrt werden konnte.

> strace hat jedenfalls die Suche nach passende Bibliotheken gut angezeigt
> inklusive den Anmerkungen (No such file or directory)

Und das ist ENOENT, ein vollkommen anderer Fehler, der (im Gegensatz zu
dem ersten) auch bei Zugriffen auf lokale Dateien auftreten kann.

> Hermann
> der nicht sicher ist,
> ob derartige Inkompatibilit�ten
> auch durch (automatische) updates geschehen k�nnen.

Normalerweise nein.
0 new messages