Bilder skalieren

Gesperrt
NobodyBody
Beiträge: 80
Registriert: Di 14. Sep 2004, 08:14
Kontaktdaten:

Bilder skalieren

Beitrag von NobodyBody »

Hallo,

ich möchte mit einem Modul vorhandene Bilder skalieren.
Dabei bin ich auf die beiden Funktionen 'capiImgScale' und 'capiImgScaleHQ' aus der 'functions.api.images.php' gestossen.

In mein Modul eingebunden funktioniert soweit alles wunderbar :)

Es gibt dabei nur einen Hacken :roll:
Vorhanden ist ein GIF-Bild mit transparenten Flächen.
Wenn ich das Bild mif der Funktion 'capiImgScale' skaliere und im Browser einbinde, werden die transparenten Flächen mit einer Farbe gefüllt.
Verwende ich die Funktion 'capiImgScaleHQ' sind die transparenten Flächen schwarz. :?

Kann man das irgendwie Umgehen :?:

Danke :!:
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

nein leider nicht...das geht technisch mit gif's nicht.
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

doch, das geht schon. vorausgesetzt, es müssen dann nicht mehr unbedingt gifs sein, sondern es dürfen pngs daraus gemacht werden. und du hast die gd-lib 2.

(1) bild einlesen

(2) neues bild gleicher grösse erstellen (normal, nicht true color)

(3) gif bild in das neue bild setzen

(4) transparente farbe ermitteln (z.b. pixel auf position 0,0 oben links ganz am rand oder sonst ein bereich, von dem du sicher sein kannst, dass er transparent ist)

(5) dann beim png diese farbe auf transparent stellen

(6) png erstellen und ausgeben oder speichern.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
NobodyBody
Beiträge: 80
Registriert: Di 14. Sep 2004, 08:14
Kontaktdaten:

Beitrag von NobodyBody »

Danke

für die Antworten.:wink:

Werd's gleich mal probieren.


mfg 8)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

folgender code stammt aus einem meiner module zur erstellung von navigationsgraphiken. z.t. sind die variablen aus einem globalen kontext. aber immerhin sieht man, welche funktionen von php resp. der gd-lib verwendet werden:

Code: Alles auswählen

// erforderliche bildbreite ermitteln
		$rahmenmass = imagettfbbox($this->font['size'], 0, $this->font['type'], $text);
		$resultierende_bildbreite = 2 * $this->margin + ($rahmenmass[2] - $rahmenmass[0]);

		// neues bild anlegen
		$dim = @ imagecreate($resultierende_bildbreite,$this->bildhoehe);

		// hintergrundfarbe setzen
		$hintergrundfarbe = ImageColorAllocate($dim, 100, 100, 100);

		// transparenz festlegen
		imagecolortransparent($dim, $hintergrundfarbe);

		// bild mit hintergrundfarbe f¸llen
		imagefill($dim, 0, 0, $hintergrundfarbe);

		// textfarbe festlegen
		if (!$highlighted) {
			$text_color = ImageColorAllocate($dim, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
		} else {
			$text_color = ImageColorAllocate($dim, $this->fontcolor[3], $this->fontcolor[4], $this->fontcolor[5]);
		}

		// text ausgeben
		imagettftext($dim, $this->font['size'], 0, $this->margin['left'], $this->textposition, - $text_color, $this->font['type'], $text);

		// bild speichern
		ImagePNG($dim, $this->bildzielpfad['backend'].$filename);
ich hoffe, das hilft dir ein wenig weiter.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
NobodyBody
Beiträge: 80
Registriert: Di 14. Sep 2004, 08:14
Kontaktdaten:

Beitrag von NobodyBody »

Danke :wink:
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

Naja ich meinte eigentlich eher eine Anti-Aliased Skalierung...die ist nur dann möglich, wenn man einen Browser hat, der PNG's mit Alpha-Channel kann...und das sind leider im Moment sehr wenige

Wenn man nur auf Pixelebene arbeitet, sieht das Ergebnis zwar nicht gut aus, aber funktioniert einigermaßen.
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

es geht leider nur mit png8 und nicht mit true color bildern. das ist schon richtig. aber gifs waren ja auch nicht wirklich besser (auch 8-bit). insofern gibt es keine verschlechterung bei der skalierung von gifs. png24 wäre wohl besser; aber insbesondere der ie kann die alpha-kanäle leider nicht richtig interpretieren.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

vielleicht ändert sich ja etwas mit IE7...oder Firefox setzt sich durch, was ich aber nicht wirklich glaube...

Drücken wir mal die Daumen! PNG's mit Alpha-Channel sind schon recht "funky"
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

also ich hoffe natürlich, dass sich der bessere browser durchsetzen wird. und das ist ja wohl firefox - ich nehme mal an, da sind wir uns einig... :lol:
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

kummer hat geschrieben:also ich hoffe natürlich, dass sich der bessere browser durchsetzen wird. und das ist ja wohl firefox - ich nehme mal an, da sind wir uns einig... :lol:
Ich halte mich mit solchen Aussagen immer recht stark zurück ;)

Aber ich sage immer: Firefox works for me ;)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

was ja das gleiche heisst... :wink:
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Gesperrt