Ошибка при работе с GD

Serguitar

Новичок->продвинутый
Ошибка при работе с GD

Сделал сайт. Выложил на хостинг.
При попытке работы с jpeg картинками выдает ошибу
Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: in......

У меня все работает. Пишу хостеру, они тычат пальцами в phpinfo() , где поддержка jpeg - enabled. Говорят дело в твоем скрипте.
Привожу скрипт:
PHP:
<?
function imageresize($infile, $image_max_width, $image_max_height) {
	$ext = substr($infile, 1 + strrpos($infile, "."));
	switch($ext) {
		case 'jpg': $im=imagecreatefromjpeg($infile);
		break;
		case 'gif': 	$im=imagecreatefromgif($infile);
		break;
		case 'png': $im=imagecreatefrompng($infile);
		break;
		case 'bmp': $im=imagecreatefromwbmp($infile);
		break;
		default : $im=imagecreatefromjpeg($infile);
	}
	$quality = 75;

	if (imagesx($im)>$image_max_width) $percents=floor($image_max_width*100/imagesx($im));

	elseif (imagesy($im)>$image_max_height) $percents=floor($image_max_height*100/imagesy($im));

	else $percents=100;

	$w=imagesx($im)*$percents/100;
	$h=imagesy($im)*$percents/100;

	$im1=imagecreatetruecolor($w,$h);

	imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));

	imagejpeg($im1,$outfile,$quality);

	imagedestroy($im);
	imagedestroy($im1);
}
imageresize($_GET['img'], $_GET['w'], $_GET['h']);
           ?>
В шаблоне вызываю как <img border="0" src="<?= "img.php?img=/images/1.jpg&w=45&h=45"; ?>">
Ошиба только ри JPEG и BMP, на PNG и GIF работает.
Кто виноват?
 

SiMM

Новичок
Расширение файла ничего не значит.
[m]getimagesize[/m]
PHP:
$im = imagecreatefromstring(file_get_contents($infile));
 

Serguitar

Новичок->продвинутый
Переделал
PHP:
<?
function imageresize($infile, $image_max_width, $image_max_height) {
$im = imagecreatefromstring(file_get_contents($infile));
     $size = getimagesize($infile);
			if ($size[0]>$image_max_width) $percents=floor($image_max_width*100/$size[0]);
			elseif ($size[1]>$image_max_height) $percents=floor($image_max_height*100/$size[1]);
			else $percents=100;
			$w=$size[0]*$percents/100;
			$h=$size[1]*$percents/100;
			$im1=imagecreatetruecolor($w,$h);
			imagecopyresampled($im1,$im,0,0,0,0,$w,$h,$size[0],$size[1]);
			imagejpeg($im1);
			imagedestroy($im1);
}
imageresize($_GET['img'], $_GET['w'], $_GET['h']);
           ?>
Выдает "содержимое" файла. То есть абракадабру.

-~{}~ 11.12.05 13:54:

Сори, поправил. Все работает. Спасибо.
 

SiMM

Новичок
И нахрена здесь getimagesize? Я его давал к тому, чтобы посмотреть, что в $size[2]
 

Serguitar

Новичок->продвинутый
SiMM
Прально. Я тоже смотрю и думаю - нахрена?=)
Все равно по-своему сделал.
 
Сверху