2014-11-22 2 views
1

Я пытаюсь просто получить тестовое изображение, немного его обрезать и отобразить. Дело в том, что я делаю это с PHP, и каждая попытка, которую я сделал до сих пор, еще больше расстроила меня;/*, и интернет говорит мне делать то, что я уже сделал. */Отображение ресурса изображения с помощью PHP

ОК, так что вы наделали?

Я пробовал различные способы получения $image. Я попытался следующие:

  1. Использование imagecreatefromstring($url);/*, где $url является расположение изображения (я вытягивать из случайных сайтов, что является необходимостью для моего проекта */
  2. Использование imagecreatefromstring(file_get_contents($url));, а затем, в <div> тега, повторяющее изображение
  3. Использование imagecreatefromstring(file_get_contents($url));, а затем, в <img> теге, повторяющее изображение
  4. Doing 3., за исключением использования imagejpeg($image)
  5. Doing 4. экс cept, на этот раз, положить

ОК, что случилось?

Первая попытка возвратила хорошую ошибку, заявив, что $image не был признан. Вторая попытка, похоже, работает, но вместо изображения я возвращаю следующий текст: Resource id #5 Третья попытка дает мне кучу тарабарщины. Четвертая попытка также дала мне кучу тарабарщины. Пятая попытка дала мне черный экран с этим сообщением об ошибке: The image “http://localhost/ResearchProject/sampleImageDisplay.php” cannot be displayed because it contains errors.

Вот окончательный код (и header.php только содержит все необходимые HTML-теги для отображения веб-страницу (DOCTYPE тег HTML-тег, метатег ...)):

<?php 
    include "header.php"; 

    $url = "http://byebyedoctor.com/wp-content/uploads/2010/12/alopecia-areata-3.jpg"; 
    $image = imagecreatefromstring(file_get_contents($url)); 
?> 
     <img> 
      <?php header('Content-Type: image/jpeg'); imagejpeg($image); ?> 
     </img> 
     <?php imagedestroy($image); ?> 
    </body> 
</html> 

Почему я не могу отобразить этот простой образ?

+1

Пожалуйста, прочитайте документацию http://php.net/manual/en/function.imagecreatefromstring.php http://php.net/manual/en/function.file-get-contents. php. Разве это не работает «GD», и вы не выполняете обработку ошибок. –

+0

'file_get_contents()' возвращает строку. –

+0

Вы не понимаете ... вы забыли сделать обработку ошибок, это не так, как это работает. Просто подсказка. :) –

ответ

1

Этот код работает для меня. Просто создайте пустой php-файл и вставьте этот код.Он должен вернуть фотографию полу-смелого человека.

$url = "http://byebyedoctor.com/wp-content/uploads/2010/12/alopecia-areata-3.jpg"; 
$im = imagecreatefromstring(file_get_contents($url)); 

if ($im !== false) { 
    header('Content-Type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
} 
else { 
    echo 'An error occurred.'; 
} 
+0

Это работает! Думаю, я ожидал слишком многого;/* Я ожидал способ отображения изображения внутри элемента HTML.А именно, я ожидал получить изображение с веб-сайта, обрезать его по своему усмотрению и отобразить его внутри элемента div/img. Они должны заполнить здесь: http://imgur.com/diVPe7m */ –

+0

@Dejan: И вы base64 кодируете данные изображения только для base64, декодируете его снова сразу же, потому что иначе процессор становится скучно ... или что? – CBroe

+0

@CBroe Да, это именно то, что я делаю! Сначала вам нужно правильно закодировать изображение в формате base64 и затем правильно декодировать его. Без первого кодирования ресурса это не сработало. –

0

Во-первых ...

Вы должны убедиться, что "allow_url_fopen" включен в php.ini.

Если у вас есть доступ к этому файлу просто изменить

;allow_url_fopen 

Для

allow_url_fopen 

Некоторые хосты отключить доступ к php.ini, хотя.

Тогда все, что вам нужно сделать, это ....

$url = "http://byebyedoctor.com/wp-content/uploads/2010/12/alopecia-areata-3.jpg"; 
$image = file_get_contents($url); 

Затем вы можете сохранить его временно изменить его или что-то ...

//Store in the filesystem. 
$fp = fopen("/location/to/save/tempimage.jpg", "w"); 
fwrite($fp, $image); 
fclose($fp); 
+0

'allow_url_fopen' уже включен на моей Windows-машине! –

+0

Кроме того, есть ли ** ** для сохранения, чтобы манипулировать им и отображать его? –

+0

Кроме того, как мне ** отображать ** это? Должен ли я использовать одну из этих функций литья изображений ?! Это то, что я просил! –

0

Основная проблема планирования: вы пытаетесь включить изображение в код html. Для этого нужен 2 ПГПСА:

  1. Файла PHP, что содержит ваш HTML-код с IMG-тегом (ЦСИ должен быть второй PHP-файл)
  2. РНР файл, что читает вам базовое изображение и выводит данные изображения в БИНАРНЫЙ

your_htmlpage.php

<html> 
    <?php 
     include "header.php"; 
    ?> 
    <body> 
     <img src="your_image.php"> 
    </body> 
</html> 

your_image.php

<?php 
    $url = "http://byebyedoctor.com/wp-content/uploads/2010/12/alopecia-areata-3.jpg"; 
    $image = imagecreatefromstring(file_get_contents($url)); 
    if($image !== false) { 
    header('Content-Type: image/jpeg'); 
    imagejpeg($image); 
    imagedestroy($image); 
    } else { 
    header("X-Error", true, 404); 

    echo "Error loading remote image"; 
    } 

    ?> 

Другим вариантом было бы отправить изображение в base64encoded строку в браузере. Но это означает, что данные изображения WHOLE являются частью html-кода. , например. Лик это:

<html> 
    <?php 
     include "header.php"; 


     $url = "http://byebyedoctor.com/wp-content/uploads/2010/12/alopecia-areata-3.jpg"; 
     $image = imagecreatefromstring(file_get_contents($url)); 
     if($image !== false) { 
      // start buffering and catch image output 
      ob_start(); 
      imagejpg($image); 
      $contents = ob_get_contents(); 
      ob_end_clean(); 
      imagedestroy($image); 

      $img_data = "data:image/jpg;base64,".base64_encode($contents); 
     } else { 
      $img_data = ""; 
     } 
    ?> 
    <body> 
     <img src="<?php echo $img_data; ?>"> 
    </body> 
</html> 
Смежные вопросы