#php #html #function
#php #HTML #функция
Вопрос:
Я создаю фотоальбом. Вы можете загрузить некоторые изображения, размер которых будет изменен, для которых будет сделана запись в базе данных и т.д.. Эта часть работает.
Затем я хотел придать фотоальбому миниатюру, чтобы он красиво выглядел в обзоре. (Это фотоальбом-обзор) Я думаю, что удобнее автоматически генерировать эскиз из загруженного файла, поэтому я создал функцию для изменения размера и обрезки изображения, но там все идет не так…
Когда я перехожу на php-страницу с помощью функции, я получаю пустой экран, как будто что-то не так, но это не так, поскольку функция все еще обрезала и изменила размер уменьшенного изображения. Кроме того, любые другие вызванные функции сработали, но я по-прежнему получаю пустой экран.
И когда я удаляю функцию обрезки / изменения размера из файла, все появляется снова, поэтому, как бы все ни работало, эта функция по-прежнему кажется проблемой!
Это функция, о которой я говорю:
function uploadthumb($path1, $path2, $path3, $path4)
{
$info = getimagesize($path1);
$breedte = $info[0];
$hoogte = $info[1];
if($hoogte <= $breedte)
{
$pseudobreedte = $hoogte*(100/124);
$margin1 = ($breedte-$pseudobreedte)/2;
$margin2 = $breedte-$pseudobreedte;
$img_r = imagecreatefromjpeg($path1);
$dst_r = imagecreatetruecolor(100, 124);
imagecopyresampled($dst_r,$img_r,0,0,0,0,100,124,$pseudobreedte,$hoogte); //nr. 1
header('Content-type: image/jpeg');
imagejpeg($dst_r,$path2,90);
$img_r = imagecreatefromjpeg($path1);
$dst_r = imagecreatetruecolor(100, 124);
imagecopyresampled($dst_r,$img_r,0,0,$margin1,0,100,124,$pseudobreedte,$hoogte); //nr. 1
header('Content-type: image/jpeg');
imagejpeg($dst_r,$path3,90);
$img_r = imagecreatefromjpeg($path1);
$dst_r = imagecreatetruecolor(100, 124);
imagecopyresampled($dst_r,$img_r,0,0,$margin2,0,100,124,$pseudobreedte,$hoogte); //nr. 1
header('Content-type: image/jpeg');
imagejpeg($dst_r,$path4,90);
}
else{
$pseudohoogte = $breedte*(124/100);
$margin1 = ($hoogte-$pseudohoogte)/2;
$margin2 = $hoogte-$pseudohoogte;
$img_r = imagecreatefromjpeg($path1);
$dst_r = imagecreatetruecolor(100, 124);
imagecopyresampled($dst_r,$img_r,0,0,0,0,100,124,$breedte,$pseudohoogte); //nr. 1
header('Content-type: image/jpeg');
imagejpeg($dst_r,$path2,90);
$img_r = imagecreatefromjpeg($path1);
$dst_r = imagecreatetruecolor(100, 124);
imagecopyresampled($dst_r,$img_r,0,0,0,$margin1,100,124,$breedte,$pseudohoogte); //nr. 1
header('Content-type: image/jpeg');
imagejpeg($dst_r,$path3,90);
$img_r = imagecreatefromjpeg($path1);
$dst_r = imagecreatetruecolor(100, 124);
imagecopyresampled($dst_r,$img_r,0,0,0,$margin2,100,124,$breedte,$pseudohoogte); //nr. 1
header('Content-type: image/jpeg');
imagejpeg($dst_r,$path4,90);
}
}
Комментарии:
1. скорее всего, вы выводите другие данные перед вызовом header (), и у вас не включено сообщение об ошибках, чтобы увидеть предупреждение "заголовки уже отправлены".
2. попробуйте настроить сообщение об ошибке на .. добавьте эти строки в начало вашего php-кода..
error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 'on');
3. Спасибо, чувак!!! Теперь я вижу, что я сделал не так.. Я не должен был использовать функцию header (), я думал, что она определяет тип содержимого миниатюры, но это не так.. Она определяет тип содержимого страницы, которую я просматриваю, что имеет смысл, если это не сработает.. Упс 🙂 Я удалил функции header (), и теперь это работает.. Еще раз спасибо, я действительно не пришел к ответу сам!
4. Кроме того, вам нужно будет сделать
$img_r = imagecreatefromjpeg($path1); $dst_r = imagecreatetruecolor(100, 124);
только один раз5. Также не должно быть необходимости выводить заголовок Content-type более одного раза.
Ответ №1:
Ответ для меня был довольно простым.. Я хотел сохранить три миниатюры, и единственное, что я делал неправильно, это каждый раз вызывал функцию header (). Я думал, что header () указывает изображение, которое я сохранял, но на самом деле это указывает тип содержимого самого документа, из-за чего страница становится пустой.