Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Februar

SELFHTML Forumsarchiv
Thumbnails erstellen und Transparenz beibehalten

Informationsseite
  1. Seite (PHP) Thumbnails erstellen und Transparenz beibehalten von AllesMeins, 18. 02. 2005, 15:27
nach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: AllesMeins, 18. 02. 2005, 15:27

Hiho,

ich versuche mich gerade an einem kleinen Script das aus hochgeladenen Bildern thumbnails erstellt. das klappt auch wunderbar nur leider geht dabei transparenz von gifs bzw. pngs verloren. Wie muss ich das nachfolgende erweitern damit auch die Transparenz erhalten bleibt?

bilder.php (gekürzt):

================================
$pic_infos = getimagesize($_FILES['userfile']['tmp_name']);



/*Faktor ermitteln mit dem das Bild verkleinert werden muss damit es eine gewisse maximalgrösse ($max_breite bzw. $max_hoehe) nicht übersteigt*/

if($pic_infos[0] > $max_breite){
  $faktor_b = $max_breite / $pic_infos[0];
}

if($pic_infos[1] > $max_hoehe){
  $faktor_h = $max_hoehe / $pic_infos[1];
}
$faktor = min($faktor_h,$faktor_b);



/*Das eben hochgeladenen Bild zum bearbeiten öffnen*/
if($pic_infos[2] == 2){
  $source = imagecreatefromjpeg($_FILES['userfile']['tmp_name']);
} elseif($pic_infos[2] == 3) {
  $source = imagecreatefrompng($_FILES['userfile']['tmp_name']);
}  elseif($pic_infos[2] == 1) {
  $source = imagecreatefromgif($_FILES['userfile']['tmp_name']);
}



/*Zielbild generieren*/
$target = imagecreatetruecolor($pic_infos[0] * $faktor,$pic_infos[1] * $faktor);



/*Hochgeladenes Bild auf neues Bild verkleinert kopieren*/
  imagecopyresampled($target, $source, 0, 0, 0, 0, $pic_infos[0] * $faktor, $pic_infos[1] * $faktor, $pic_infos[0], $pic_infos[1]);



/*Abhängig vom Format der Quelldatei die Zieldatei schreiben*/
  if($pic_infos[2] == 2){
   imagejpeg($target, "news/images/" . $_FILES['userfile']['name']);
  } elseif($pic_infos[2] == 3) {
   imagepng($target, "news/images/" . $_FILES['userfile']['name']);
  }  elseif($pic_infos[2] == 1) {
   imagegif($target, "news/images/" . $_FILES['userfile']['name']);
  }

================================
Hmm, ist leider ziemlich viel Code geworden, aber mehr kann ich wohl schlecht rauskürzen. Ansonsten dürfte die Funktionsweise wohl nicht mehr klar werden. Ich hoffe irgendwer ist bereit sich das mal anzusehen und mir zu helfen...

Grüsse

Marc

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: Bio, 18. 02. 2005, 18:21

Sup!

Du darfst einfach keine JPEG-Thumbnails erstellen, denn JPEG kann keine Transparenz. Voila!

Gruesse,

Bio
--
Keep your friends close, but your enemies closer!

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: Sven Rautenberg, 18. 02. 2005, 18:57

Moin!

»» Sup!
»»
»» Du darfst einfach keine JPEG-Thumbnails erstellen, denn JPEG kann keine Transparenz. Voila!

Genau deshalb steht doch ganz zum Schluß des Codes eine Abfrage drin, welches Originalformat vorlag, damit das Thumbnail im gleichen Format gespeichert wird.

- Sven Rautenberg

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: Sven Rautenberg, 18. 02. 2005, 19:00

Moin!

»» nur leider geht dabei transparenz von gifs bzw. pngs verloren. Wie muss ich das nachfolgende erweitern damit auch die Transparenz erhalten bleibt?

http://de2.php.net/manual/en/function.imagealphablending.php
http://de2.php.net/manual/en/function.imagesavealpha.php

Alles klar?

- Sven Rautenberg

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: AllesMeins, 18. 02. 2005, 21:53

Hiho,

danke für die Antwort. Leider will esnoch immer nicht so ganz... Ich habe jetzt nach dem $target = imagecreatetruecolor() ein

imagealphablending ( $target, true );
imagesavealpha($target, true);

eingefügt. Hilft aber nichts ich erhalte immer noch nen schwarzen Rand anstatt der Transparenz (sowohlö bei gifs als auch bei pngs)...

Marc

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: Achim Janowski, 18. 02. 2005, 21:58

Hallo!

Setz mal bei
imagealphablending ( $target, true );

statt "true" ein "false".

Gruß, Achim

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: AllesMeins, 18. 02. 2005, 23:01

Hiho,

ich habde den Eindruck wir nähern uns dem Ziel :) Jetzt funktioniert die Transparenz bei PNGs wunderbar - bei gifs leider noch nicht...

Marc

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: Achim Janowski, 19. 02. 2005, 07:52

Hallo!

bei GIFs habe ich das so gelöst (allerdings jetzt mit "meinen" Variablennamen, nicht mir Deinen...).

$colorTransparent = imagecolortransparent($image);
$newimage = imagecreate($width, $height);
imagepalettecopy($newimage, $image);
imagefill($newimage, 0, 0, $colorTransparent);
imagecolortransparent($newimage, $colorTransparent);
imagecopyresized($newimage, $image, 0, 0, 0, 0, $width, $height, $xwert, $ywert);

Gruß, Achim

nach obennach unten

Thumbnails erstellen und Transparenz beibehalten

Die folgende Nachricht zum Thema stammt von: Sven Rautenberg, 18. 02. 2005, 23:04

Moin!

»» Setz mal bei
»» imagealphablending ( $target, true );
»»
»» statt "true" ein "false".

Alphablending = true sorgt dafür, dass der Alphawert des Pixels mit dem Hintergrund zusammengerechnet wird zu einer Mischfarbe. Deshalb: Vorher ist der Hintergrund schwarz, der neue Pixel ist 100% transparent. Ergebnis: 100% schwarz.

Mit Alphablending= false wird dieses Mischen abgeschaltet, die Transparenzinformation bleibt erhalten - genau das ist gewünscht.

Steht so auch in der Doku zu imagesavealpha drin, btw. ;)

"You have to unset alphablending (imagealphablending($im, FALSE)), to use it."

- Sven Rautenberg

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Februar

© 1998-2008 Seite Impressum, Software: Classic Forum