Zum Inhalt springen

jm_gallery Fehler mit Imagemagick 4.2.9

Erstellt am 30. März 2006 · 1 Antwort · letzte Antwort am 31. März 2006

Tags: Bilder, Frage

rmelching ·

Hallo,

wir haben Imagemagick in der Version 4.2.9 und die jm_gallery Version 0.4.2 installiert. Bis auf das Konvertieren über Imagemagick ist wohl alles in Ordnung. Folgende Fehlermeldung erschein aber sobald ein Bild hochgeladen wird:

"Fatal error: Call to undefined function: imagemagickcommand() in /homepages/36/d125797698/htdocs/typo3_src-3.7.0/typo3/ext/jm_gallery/pi1/class.tx_jmgallery_pi1.php on line 838"

Folglich funktioniert das Synchronisieren auch nicht richtig. Der Debug-Modus läuft auch nicht richtig durch, da hier auch die Konvertierung aufgerufen wird. Ich habe die Meldungen bis dahin mal ausgegeben:

" * Imagemagick: 1
* Path To Imagemagick: /homepages/36/d125797698/htdocs/imagemagick-4.2.9/
* Does convert exist in this directory?: Yes
* Checking for IM in different directory, found:"

Imagemagick läuft auch bei dem Test über die Installation einwandfrei.

Wo liegt der Fehler?

// Ich habe jetzt mal den Aufruf der Funktion verändert und den 'convert' Bereich gelöscht. Dann läuft alles zwar ohne Fehlermeldung durch, aber er bearbeitet die Bilder natürlich nicht richtig. Im ImagaMagick Verzeichnis ist die Datei convert vorhanden.

// #angry# Anscheinend ist unsere Version 3.7 das Problem. Ab 3.8 gibt es da wohl eine andere Vorgehensweise mit ImageMagick. Kann ich das mit wenig Aufwand auf die 3.7 umbiegen oder muss ich auf den Umstieg auf neue Versionen warten?

m00re ·

Hi!

Ersetze die resizeImage() Funktion in pi1/class.tx_jmgallery_pi1.php einfach mit folgender Funktion...

function resizeImage($width, $height, $quality, $source, $target) {
		$gfxObj = t3lib_div::makeInstance("t3lib_stdgraphic");
		if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['im'] == 1) {

			$stdGraphic = t3lib_div::makeInstance("t3lib_stdGraphic");
			$info = $stdGraphic->getImageDimensions($source);
			$options = array();
			$options["maxH"] = $height;
			$options["maxW"] = $width;
			$data = $stdGraphic->getImageScale($info, $width."m", $height."m", $options);	
			
			$params = '-geometry '.$data[0].'x'.$data[1].'! -quality '.$quality.' ';
			$cmd = $GLOBALS['TYPO3_CONF_VARS']['GFX']['im_path'].'/convert '.$params.' "'.$source.'" "'.$target.'"';
			
			$im = array();
			$im["string"] = $cmd;
			$im["error"] = shell_exec($cmd.' 2>&1');
			return $im;
		} else {
			// Get new dimensions
			list($width_orig, $height_orig) = getimagesize($source);
			
			if ($width && ($width_orig < $height_orig)) {
			   $width = ($height / $height_orig) * $width_orig;
			} else {
			   $height = ($width / $width_orig) * $height_orig;
			}
			
			// Resample
			$image_p = imagecreatetruecolor($width, $height);
			$image = imagecreatefromjpeg($source);
			imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
			
			// Output
			imagejpeg($image_p, $target, $quality);
		}
	}

Gruß Jens