Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 08.09.09 16:27

Hi.
ich habe folgendes skript, dass aus bildern Thumbnails macht:
<?php
// Funktion: Thumbnail erstellen
// =============================

function thumbnail($image_path, $image_name, $thumbnail_path, $thumbnail_name, $thumbnail_width)
{

// always create a thumbnail image,
// regardless of original image size
$always_thumbnail = true;

// image properties:
// [0]: width,
// [1]: height,
// [2]: type (*.jpg, *.gif, *.png...),
// [3]: file size
$image_size = getimagesize($image_path . $image_name);

// width of original image
$image_width = $image_size[0];

// height of original image
$image_height = $image_size[1];

// create thumbnail if original image is bigger than a thumbnail

if(
$image_width > $thumbnail_width ||
$always_thumbnail == true
)
{

// calculate thumbnail height
$thumbnail_height = intval($image_height / ($image_width / $thumbnail_width));

// create gif-thumbnail
if($image_size[2] == 1)
{
$old_gif = ImageCreateFromGIF($image_path . $image_name);
$new_gif = ImageCreate($thumbnail_width, $thumbnail_height);
ImageCopyResampled($new_gif, $old_gif, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $image_width, $image_height);
ImageGIF($new_gif, $thumbnail_path . $thumbnail_name);
}

// create jpg-thumbnail
if($image_size[2] == 2)
{
$old_jpg = ImageCreateFromJPEG($image_path . $image_name);
$new_jpg = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
ImageCopyResampled($new_jpg, $old_jpg, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $image_width, $image_height);
ImageJPEG($new_jpg, $thumbnail_path . $thumbnail_name);
}

// create png-thumbnail
if($image_size[2] == 3)
{
$old_png = ImageCreateFromPNG($image_path . $image_name);
$new_png = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
ImageCopyResampled($new_png, $old_png, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $image_width, $image_height);
ImagePNG($new_png, $thumbnail_path . $thumbnail_name);
}
}
}
?>

bei großen bildern (zb von der digicam) meckert der server dass er nicht genug ram hat:
Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 15968 bytes) in /bla/bla/thumbnail_url.php on line 49

(25mb pro skript sind in meinem vertrag inbergriffen).
kann man das irgentwie optimieren?

netcup.de Warum gibt es hier Werbung?
danieL danieL am 10.09.09 11:38

tach auch,
über eine .htaccess kannst du den Speicher erhöhen, z.B. mit
php_value memory_limit 32M

oder direkt in der php datei
ini_set('memory_limit', '32M');

Quote
Hinweis:
damit das Memory-Limit von PHP funktioniert muss PHP mit --enable-memory-limit compiliert worden sein, was aber bei allen gängigen Paketformaten der Fall sein sollte.


Quelle: http://juliusbeckmann.de/blog/php-memory-limit-erhohen.html

fish fish am 10.09.09 11:45

hmm habs probiert, aber ich bin schon am limit, der hoster lässt leider nicht mehr zu...
im skript selber kann man nichts verändern, dass den speicherplatzverbrauch reduziert, oder?

danieL danieL am 10.09.09 12:01

Quote
Original von fish
hmm habs probiert, aber ich bin schon am limit, der hoster lässt leider nicht mehr zu...
im skript selber kann man nichts verändern, dass den speicherplatzverbrauch reduziert, oder?


ich kenn mich mit der bildbearbeitung in php nicht sonderlich gut aus, aber ich glaube nicht das sich da noch viel machen lässt.

nuit nuit am 10.09.09 12:45

das problem liegt darin, nicht wie das skript funktioniert, sondern, dass er das komplette bild in den speicher lädt.
die einzige idee die ich hab ist imagemagick zu verwenden...

fish fish am 10.09.09 13:22

kannst du mir deine idee kurz erläutern?

danieL danieL am 10.09.09 14:04

Quote
Original von fish
kannst du mir deine idee kurz erläutern?


Ich denke er meint http://de.php.net/manual/en/imagick.examples-1.php

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt