Re: Bilddatei als Ressource im Script ablegen

David Haller <[email protected]> Sun, 26 Sep 2010 18:10:37 +0200
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo,

Am Son, 26 Sep 2010, Thomas Moritz schrieb:
>gegeben sind jpg's gleicher Groesse und ein transparentes png je 
>Copyright in gleicher Groesse.
>In einem Script moechte ich jedes/alle/ein jpg mit dem jeweiligen, 
>transparenten png ueberlagern. Das klappt auch prima mit composite.
>Jetzt moechte ich das png gern als Ressource im Script hinterlegen und 
>dazu fehlt mir ein konkreter Anhaltspunkt.

Enthält das PNG irgendwelche Besonderheiten? Sonst könntest du das
Copyright einfach per convert einfügen:

convert \
    -font "helvetica" \
    -pointsize 18 \
    -fill black \
    -draw "text 15,30 'Copyright bla blubb' \
    -comment "Copyright bla blubb" foo.jpg foo_out.jpg

>Das png muss ich vermutlich byteweise als hex in eine Variable 
>einlesen. Aber wie voll darf ich eine Variable ueberhaupt packen?
>Mein erstes Test-png ist 15286 Byte gross.
>
>Wer hat an sowas schonmal gebastelt und kann mir auf die Spruenge 
>helfen? 

Lege das PNG base64 kodiert in ner Variablen (oder per Here-Dokument)
ab. Oder nach nem Marker am Scriptende (vgl. shar-selbstentpackende
Archive).

uuencode -m foo.png.uu < foo.png

generiert dir den das uu-kodierte PNG, verwenden kannst du's dann mit
uudecode. Also z.B.:

FOO_PNG_UU='begin-base64 644 foo.png
iVBORw0KGgoAAAANSUhEUgAAAcAAAABpEAIAAABys7j1AAAACW9GRnMAAAB7
...
====
'

(in den '' steht die Ausgabe von uuencode -m).

und dann:

echo "$FOO_PNG_UU" | uudecode -o - | composite bar.jpg ... png:- ...

wobei du die restlichen Optionen statt der '...' ergänzen mußt und das
png:- composite angibt welchen Typ das per STDIN zu lesende Bild hat.

"Eingebettet" im Script statt ner Variablen könnte das evtl. so gehen
(nur Idee, ungetestet):

====
FOO_PNG_UU="$(sed -n "/BEGIN_FOO_PNG_UU/,/END_FOO_PNG_UU/p')"

[Rest vom script]
exit 0

BEGIN_FOO_PNG_UU
begin-base64 644 foo.png
iVBORw0KGgoAAAANSUhEUgAAAcAAAABpEAIAAABys7j1AAAACW9GRnMAAAB7
...
====
END_FOO_PNG_UU

BEGIN_BAR_PNG_UU
begin-base64 644 bar.png
...
END_FOO_PNG_UU
====

HTH,
-dnh

-- 
Optimist:  There is a light at the end of the tunnel.
Pessimist: ... it is an oncoming train.
Cynic:     ... and it is late.       -- D. C. Staples