2015-10-15 3 views
1

Я пытаюсь изменить размер изображения, сделав его 200 x 200, сохраняя соотношение сторон. Я пытаюсь выполнить http://php.net/manual/en/function.imagecopyresampled.php, чтобы попытаться выполнить это. Вот мой код:Изменение размера изображения с использованием php

<?php 
    $directory = "uploads/"; 
    $images = glob($directory."*.jpeg"); 
    foreach($images as $filename) { 

     // Set a maximum height and width 
     $width = 200; 
     $height = 200; 

     // Get new dimensions 
     list($width_orig, $height_orig) = getimagesize($filename); 

     $ratio_orig = $width_orig/$height_orig; 

     if ($width/$height > $ratio_orig) { 
      $width = $height*$ratio_orig; 
     } else { 
      $height = $width/$ratio_orig; 
     } 

     // Resample 
     $image_p = imagecreatetruecolor($width, $height); 
     $image = imagecreatefromjpeg($filename); 
     imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

     // Output 
     imagejpeg($image_p, null, 100); 
    } 
?> 

Я достал тип контента, потому что это давало мне ошибку. Вместо вывода измененного изображения он выдавал кучу таких символов:

JFIF�����t��jw��E��4."�DN�9>m���4����P};WI��x"�.

Кто-нибудь знает, почему это происходит?

+1

Где у вас «тип контента» раньше? –

+0

Вы пытаетесь изменить их размер и сохранить или изменить их размер и обслуживать? Даже если вы добавляете заголовок типа контента, вы по-прежнему пытаетесь вывести поток байтов из нескольких jpeg-изображений в один запрос. Это не сработает, как вы думаете. –

+0

Я удалил его, потому что он продолжал давать мне эту ошибку: «Предупреждение: невозможно изменить информацию заголовка - уже отправленные заголовки (вывод запущен в /home/sites/aejhyun.com/public_html/Syrian Project/index.php: 555) в/home/sites/aejhyun.com/public_html/Syrian Project/index.php on line 558' –

ответ

0

Вам необходимо отправить заголовок в браузер, чтобы ваш вывод мог быть правильно понят браузером. Добавить следующую строку в скрипт:

header('Content-Type: image/jpeg'); 
0

Вы должны иметь header('Content-Type: image/jpeg'); перед циклом Еогеасп

+0

Однако я получаю эту ошибку: 'Предупреждение: не могу изменить информацию заголовка - уже отправленные заголовки (вывод запущен в/home/sites/aejhyun .com/public_html/Syrian Project/index.php: 555) в /home/sites/aejhyun.com/public_html/Syrian Project/index.php в строке 558' –

+1

Ну, это означает, что там есть выход. Это настоящая проблема. Сначала вы отправляете все заголовки, затем вы выводите. – Cosmin

0

Этот код должен быть в самом начале файла:

header('Content-Type: image/jpeg'); 

И выше код должен быть автономным, у вас не должно быть никаких HTML-тэгов в любом месте, и он не должен быть «включен PHP» в любом месте.