我使用图像作为数据库中的BLOB,以便使用Imagick进行进一步处理。 但现在我需要使用图像文件来做同样的事情。
我转换“旧”脚本使用文件时遇到了一些问题。我将其更改为imageCreateFromJpeg
(用于读取源文件)和imagejpeg()
(用于编写图像文件)。但它不起作用。
但源文件未更新。我究竟做错了什么?
$image = ImageCreateFromString(base64_decode($file->source));
$image_width = imagesx($image);
$image_height = imagesy($image);
/* Do some processing
some... ImageCreateTrueColor(...);
ImageCopy(...);
ImageCopyResized(...);
ImageCopyMerge(...);
*/
ob_start();
imagejpeg($image, NULL, 100);
$processed_image = base64_encode(ob_get_contents());
imagedestroy($image);
ob_end_clean();
我把它更改为:
$file = 'path/to/image.jpg';
$image = imageCreateFromJpeg($file); // read from file
$image_width = imagesx($image);
$image_height = imagesy($image);
/* Do some processing
some... ImageCreateTrueColor(...);
ImageCopy(...);
ImageCopyResized(...);
ImageCopyMerge(...);
*/
ob_start();
imagejpeg($image, $file, 100); // write everthing to the same file
imagedestroy($image);
ob_end_clean();
答案 0 :(得分:0)
以下是一个工作示例(包括调整大小 - 设置目标$width
和$height
的值):
list($originalWidth, $originalHeight) = getimagesize($file);
$src = imagecreatefromjpeg($file);
$dest = imagecreatetruecolor($width, $height);
ImageCopyResampled($dest, $src, 0, 0, 0, 0, $width, $height, $originalWidth, $originalHeight);
header('Content-Type: image/jpeg');
ob_start();
imagejpeg($dest);
$size = ob_get_length();
header("Content-Length: " . $size);
ob_end_flush();
imagedestroy($dest);
exit;