image resize s GD2
Pokud nemáte na serveru nainstalován ImageMagick stává se automatický resize obrázků problémem. Typo3 automaticky IM předpokládá a knihovnu GD defakto odsouvá do pozadí.
Jelikož Typo3 je open-source, není problém cokoliv změnit a upravit si dle vlastních potřeb. Modifikoval jsem tedy třídu t3lib_stdgraphic tak, aby resizovala obrázky i když není IM k dispozici. Stačí stáhnout si zde PHP soubor a přepsat originální v adresáři t3lib.
Fragment původní třídy
function imageMagickConvert($imagefile,$newExt='',$w='',$h='',$params='',$frame='',$options='',$mustCreate=0) { if ($this->NO_IMAGE_MAGICK) { // Returning file info right away return $this->getImageDimensions($imagefile); } ...
Upravený fragment
function imageMagickConvert($imagefile,$newExt='',$w='',$h='',$params='',$frame='',$options='',$mustCreate=0) { if ($this->NO_IMAGE_MAGICK) { // Returning file info right away if ($info = $this->getImageDimensions($imagefile)) { $data = $this->getImageScale($info,$w,$h,$options); $w=$data['0']; $h=$data['1']; $ext = $info[2]; $path = $info[3]; if (($ext=='jpg')||($ext=='png')) { $newIm = ImageCreateTrueColor($w,$h); if ($ext == 'jpg') { $im = ImageCreateFromJPEG($path); } else { $im = ImageCreateFromPNG($path); } imagecopyresampled($newIm,$im,0,0,0,0,$w,$h,$info[0],$info[1]); $this->createTempSubDir('pics/'); $output = $this->absPrefix.$this->tempPath.'pics/'.uniqid('im').'.'.$ext; if ($ext == 'jpg') { imagejpeg($newIm,$output); } else { imagepng($newIm,$output); } $imagefile = $output; } } return $this->getImageDimensions($imagefile); } ...