Thumbnails! Aber wie?

Hey…

ich habe versucht das folgende Script an meine Bedürfnisse anzupassen…

[code]
function resizeImage ($filepath_old, $filepath_new, $image_dimension, $scale_mode = 0) {
if (!(file_exists($filepath_old))) return false;

$image_attributes = getimagesize($filepath_old);
$image_width_old = $image_attributes[0];
$image_height_old = $image_attributes[1];
$image_filetype = $image_attributes[2];

if ($image_width_old <= 0 || $image_height_old <= 0) return false;
$image_aspectratio = $image_width_old / $image_height_old;

if ($scale_mode == 0) {
$scale_mode = ($image_aspectratio > 1 ? -1 : -2);
} elseif ($scale_mode == 1) {
$scale_mode = ($image_aspectratio > 1 ? -2 : -1);
}

if ($scale_mode == -1) {
$image_width_new = $image_dimension;
$image_height_new = round($image_dimension / $image_aspectratio);
} elseif ($scale_mode == -2) {
$image_height_new = $image_dimension;
$image_width_new = round($image_dimension * $image_aspectratio);
} else {
return false;
}

switch ($image_filetype) {
case 1:
$image_old = imagecreatefromgif($filepath_old);
$image_new = imagecreate($image_width_new, $image_height_new);
imagecopyresampled($image_new, $image_old, 0, 0, 0, 0, $image_width_new, $image_height_new, $image_width_old, $image_height_old);
imagegif($image_new, $filepath_new);
break;

case 2:
$image_old = imagecreatefromjpeg($filepath_old);
$image_new = imagecreatetruecolor($image_width_new, $image_height_new);
imagecopyresampled($image_new, $image_old, 0, 0, 0, 0, $image_width_new, $image_height_new, $image_width_old, $image_height_old);
imagejpeg($image_new, $filepath_new);
break;

case 3:
$image_old = imagecreatefrompng($filepath_old);
$image_colordepth = imagecolorstotal($image_old);

if ($image_colordepth == 0 || $image_colordepth > 255) {
 $image_new = imagecreatetruecolor($image_width_new, $image_height_new);
} else {
 $image_new = imagecreate($image_width_new, $image_height_new);
}

imagealphablending($image_new, false);
imagecopyresampled($image_new, $image_old, 0, 0, 0, 0, $image_width_new, $image_height_new, $image_width_old, $image_height_old);
imagesavealpha($image_new, true);
imagepng($image_new, $filepath_new);
break;

default:
return false;
}

imagedestroy($image_old);
imagedestroy($image_new);
return true;
}

$filepath_old = BASEHREF."/useraccount/profil/profilbilder/".$uid.".gif";
$filepath_new = BASEHREF."/useraccount/profil/profilbilder/thumbnails/".$uid.".gif";
$image_dimension = 200;

resizeImage ($filepath_old, $filepath_new, $image_dimension);[/code]
Es stammt vom PHP-einfach.de:wink:

Leider funzt das nich :frowning: kann mir einer sagen was ich falsch gemacht habe? Wie bekomme ich es zum laufen?

lg Lukas

PS: $uid ist schon von mir vergeben worden und BASEHREF auch :wink:

Für Thumbnails? Ich hab das so gelöst:

function createThumb($id)
{
	$big_info = getimagesize("files/$id");
	switch($big_info['mime'])
	{
		case "image/png": $big = imagecreatefrompng("files/$id"); break;
		case "image/gif": $big = imagecreatefromgif("files/$id"); break;
		case "image/jpeg": $big = imagecreatefromjpeg("files/$id"); break;
		default: return false;
	}
	if(!$big) return false;
	$new_info = array(120, $big_info[1] / $big_info[0] * 120);
	$new = imagecreatetruecolor($new_info[0], $new_info[1]);
	imagecopyresampled($new, $big, 0, 0, 0, 0, $new_info[0], $new_info[1], $big_info[0], $big_info[1]);
	if(!imagepng($new, "files/thumbs/$id")) return false;
	imagedestroy($new);
	imagedestroy($big);
	return true;
}

Dafür hab’ ich ein shellscript… die paar Byte mehr gehen schneller durch die Leitung, als dieses PHP-Ungetüm zum Rechnen braucht :ps:

Im Ernst: wozu thumbs online generieren? Das machte ich offline - spart Serverlast und ist wesentlich performanter.

Das ist keine brauchbare Problembeschreibung.

Du hast offenbar nicht mal ansatzweise Debugging betrieben.

[quote=„i.deFix“]Dafür hab’ ich ein shellscript… die paar Byte mehr gehen schneller durch die Leitung, als dieses PHP-Ungetüm zum Rechnen braucht :ps:

Im Ernst: wozu thumbs online generieren? Das machte ich offline - spart Serverlast und ist wesentlich performanter.[/quote]
Weil es Seiten gibt, die Bilduploads ermöglichen, und nicht jeder User ein Shellscript laufen lassen kann/will :wink: