使用PHP显示图像资源

时间:2014-11-22 01:56:20

标签: php html image

我正在尝试简单地获取测试图像,稍微裁剪并显示它。问题是,我是用PHP做的,到目前为止我所做的每一次尝试都让我更加沮丧; / *和互联网告诉我做我已经做过的事情。 * /

好的,你做了什么?

我尝试了各种获取$image本身的方法。我尝试过以下方法:

  1. 使用imagecreatefromstring($url); / *其中$url是图片的位置(我从随机网站中提取,这是我项目的必需品* /
  2. 使用imagecreatefromstring(file_get_contents($url));然后在<div>标记中回显图像
  3. 使用imagecreatefromstring(file_get_contents($url));然后在<img>标记中回显图像
  4. 执行3.,但使用imagejpeg($image)
  5. 除外
  6. 执行4.,除了这次放header('Content-Type: image/jpeg');
  7. 好的,发生了什么?

    第一次尝试返回了一个错误的错误,表示$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>
    

    为什么我不能显示这个简单的图像?

3 个答案:

答案 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.';
}

答案 1 :(得分:0)

首先关闭......

你必须确保在php.ini中启用了“allow_url_fopen”。

如果您有权访问此文件,只需更改

即可
;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);

答案 2 :(得分:0)

您的主要规划问题是:您尝试将图片包含在HTML代码中。 为此你需要2个phps:

  1. 包含带有img-tag的html代码的php文件(src必须是第二个php文件)
  2. 用于读取基本图像并输出 BINARY 图像数据的php文件
  3. <强> 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 String发送到浏览器。但这意味着整个图像数据是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>