使用imagejpeg保存并提供图像文件

V. *_*ora 3 php image-processing

我正在做一些PHP +图像处理的实验.我正在尝试将一些图像转换为黑白版本.我大部分都想到了,但有一个小问题.

为了减轻服务器的压力,我想保存B&W版本,只对以前没有通过脚本运行的图像运行图像过滤.所以,我有这样的事情:

<?php 
header("Content-type: image/jpeg");

$file = $_GET['img'];
$name = md5($file).".jpg";

if(file_exists("/path/to/file" . $name)) {

    ob_clean();
    flush();
    readfile("path/to/file" . $name);
    exit;

}
else {

 $image = imagecreatefromjpeg($file);

 imagefilter($image, IMG_FILTER_GRAYSCALE);
 imagejpeg($image, "/path/to/file" . $name);

 imagedestroy($image);
};

?> 
Run Code Online (Sandbox Code Playgroud)

这会创建文件的B&W版本并将其保存到服务器.最初的"if"语句也有效 - 如果图像已经存在,它会正确地提供图像.

问题是,对于运行的新图像,这会保存它们但不会将它们输出到浏览器.为了做到这一点,我可以使用/更改什么?

此外,这是我第一次做这样的事情.任何关于做上述事项的一般提示将不胜感激.

Sto*_*oic 6

上述功能的紧凑和正确形式可以是:

<?php 
header("Content-type: image/jpeg");

$file = $_GET['img'];
$name = md5($file).".jpg";

if(!file_exists("/path/to/file" . $name)) {
 imagefilter($image, IMG_FILTER_GRAYSCALE);
 imagejpeg($image, "/path/to/file" . $name);
} else {
 $image = imagecreatefromjpeg("/path/to/file" . $name);
}

imagejpeg($image);
imagedestroy($image);

?> 
Run Code Online (Sandbox Code Playgroud)