file_get_contents()输出文本而不是图像

时间:2013-04-28 16:06:47

标签: php ajax

我有这个代码应该从中获取url 我相信它有效,因为它输出的东西(不是错误)

<?php 
    $url = $_GET['image'];
    $image = imagecreatefromstring(file_get_contents($url));
    header('content-type: image/jpeg'); 
    echo "<img scr=\"" . imagejpeg($image, null, 100) . "\" />"; 
    ?>

虽然代替图像,却输出文字...... 也许问题出在AJAX处理代码中:

function showImage(str) {

    if (str.length == 0) {
      document.getElementById("show_image_input").innerHTML="";
      return;
    } 

    if (window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
      xmlhttp.onreadystatechange=function() {

        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("show_image_input").innerHTML=xmlhttp.responseText;
        }
      }

  xmlhttp.open("GET","parts/display_input.php?image="+str,true);
  xmlhttp.send();
}
}

但它确实是它的工作(输出图像,如果网址有效)...... 任何想法如何使它工作?

1 个答案:

答案 0 :(得分:4)

imagejpeg()输出jpeg的原始二进制数据,例如以JFIF.....开头的垃圾。 <img> html标记需要 URL 指向要加载的文件的位置。此代码永远不会按原样运行。

尝试

image.php:

<?php 

$url = $_GET['image'];
$image = imagecreatefromstring(file_get_contents($url));
header('content-type: image/jpeg'); 
imagejpeg($image)

HTML:

<img src="image.php?image=kittens.gif" />

代替。