-2

我在我的控制器中使用以下代码:

//function to protect images from being accessed directly.
function getImage($img_id){


      //code to authenticate user goes here then...
$url = $this->data['base_url'].'system/application/images/c/thumbs/';

$filepath = $url.$img_id;

    header("Content-type: image/jpeg");
  if(file_exists($filepath)){
    echo "we are here";
        $img_handle = imagecreatefromjpeg($filepath) or die("");
    echo $img_handle;
        ImageJpeg($img_handle);
    }



    }

在我看来,要获取图像,我使用了以下代码:

<img src='<?php echo base_url(); ?>index.php/Controller/getImage/obama.jpg' width="100px"> 

现在即使它进入控制器,它也不会显示图像。Obama 文件位于正确的目录中。我不知道为什么。

4

2 回答 2

1

您的问题是您将文本输出到浏览器,然后是图像。浏览器会尝试渲染图像,但会损坏。

header("Content-type: image/jpeg");
if(file_exists($filepath)){
    echo "we are here";
    $img_handle = imagecreatefromjpeg($filepath) or die("");
    echo $img_handle;
    ImageJpeg($img_handle);
}

此外,如果你想做一个echo你不能发送header说“嘿,这是一个 jpeg 图像”。

于 2012-07-12T22:05:26.433 回答
0

您确定可以通过 $this->data['base_url'].'system/application/images/c/thumbs/obama.jpg 访问图像,您尝试在浏览器上访问它,对吗?

此外,避免在渲染图像之前打印文本,这可能会损坏图像。

如果仍然不起作用,请告诉我们错误页面截图,它在说什么。

于 2012-07-13T05:38:01.373 回答