Не открывается изображения
У меня такая проблема, есть функция которая делает превью изображение она всё работает нормально то есть создаёт превю изображение но проблема в том что после выполнение функций превью не открывается по ссылке а если скачать по ФТП она открывается нормально.
Вот и функция:
Код:
function resize($file_input, $file_output, $w_o, $h_o, $percent = 75) {
list($w_i, $h_i, $type) = getimagesize($file_input);
if (!$w_i || !$h_i) {
echo 'Невозможно получить длину и ширину изображения';
return;
}
$types = array('','gif','jpeg','png');
$ext = $types[$type];
if ($ext) {
$func = 'imagecreatefrom'.$ext;
$img = $func($file_input);
} else {
echo 'Некорректный формат файла';
return;
}
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
}
if (!$h_o) $h_o = $w_o/($w_i/$h_i);
if (!$w_o) $w_o = $h_o/($h_i/$w_i);
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
if ($type == 2) {
return imagejpeg($img_o,$file_output,100);
} else {
$func = 'image'.$ext;
return $func($img_o,$file_output);
}
}
list($w_i, $h_i, $type) = getimagesize($file_input);
if (!$w_i || !$h_i) {
echo 'Невозможно получить длину и ширину изображения';
return;
}
$types = array('','gif','jpeg','png');
$ext = $types[$type];
if ($ext) {
$func = 'imagecreatefrom'.$ext;
$img = $func($file_input);
} else {
echo 'Некорректный формат файла';
return;
}
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
}
if (!$h_o) $h_o = $w_o/($w_i/$h_i);
if (!$w_o) $w_o = $h_o/($h_i/$w_i);
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
if ($type == 2) {
return imagejpeg($img_o,$file_output,100);
} else {
$func = 'image'.$ext;
return $func($img_o,$file_output);
}
}
В чём может быть проблема?
Спасибо за ранее.
Используйте Content-Type перед тем как отдавать картинку. image/jpeg для картинки, и text/plain для сообщения об ошибке.
Код:
function resize($file_input, $file_output, $w_o, $h_o, $percent = 75) {
$im=@imagecreatefromstring(@file_get_contents($file_input));
if (!im) {
header("Content-Type: text/plain");
echo 'Некорректный формат файла';
return;
}
$w_i=imagesx($im);
$h_i=imagesy($im);
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
}
if (!$h_o) $h_o = $w_o/($w_i/$h_i);
if (!$w_o) $w_o = $h_o/($h_i/$w_i);
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
return imagejpeg($img_o,$file_output,100);
}
$im=@imagecreatefromstring(@file_get_contents($file_input));
if (!im) {
header("Content-Type: text/plain");
echo 'Некорректный формат файла';
return;
}
$w_i=imagesx($im);
$h_i=imagesy($im);
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
}
if (!$h_o) $h_o = $w_o/($w_i/$h_i);
if (!$w_o) $w_o = $h_o/($h_i/$w_i);
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
return imagejpeg($img_o,$file_output,100);
}
Цитата:
mike
К сожаление твой вариант тоже выдаёт недоступное изображение, может проблема в что-то другое?
http://www.phpkode.com/source/s/jpeg-reducer/jpeg-reducer/class.jpegreducer.php
он конечно только для jpg, но я в своем проэкте модифицировал его для работы и с другими форматами
Как вы его выводите? Куда? в какую папку? Какие разрешения на папке? Если в браузер выводите - опять же - как?
Срочно открою кружок телепатов.
Цитата: Kesano
А при чем тут код ресайза к выводу изображения?...
Как вы его выводите? Куда? в какую папку? Какие разрешения на папке? Если в браузер выводите - опять же - как?.
Как вы его выводите? Куда? в какую папку? Какие разрешения на папке? Если в браузер выводите - опять же - как?.
Выводится таким образом:
[HTML]
<a href="./wallpapers/images/<?=$file?>" class="highslide" onclick="return hs.expand(this)">
<img src="./wallpapers/images/thumb/<?=$file?>" width="130px" border="0">
</a>[/HTML]
На папку ставил даже полный доступ, но к сожаление не открывается и по такому адресу: [HTML]http://site.my/wallpapers/images/thumb/images.jpg[/HTML] нерезаная изображение открывается без проблем, если скачать изображение по ФТП то она открывается как уменьшенную без проблем.