是否可以在不将图像保存到计算机中的情况下将.jpg,.jpeg或.gif图像转换为php中的.png? 类似的东西:
function read_image($filename, $extension) {
switch($extension) {
case '.png':
$image = imagecreatefrompng($filename);
break;
case '.jpg': case '.jpeg':
$unTransformed = imagecreatefromjpeg($filename);
$image = transform($unTransformed);
break;
case '.gif':
$unTransformed = imagecreatefromgif($filename);
$image = transform($unTransformed);
break;
return $image;
}
}
function transform($unTransformed) {
// Some magic here without actually saving the image to your machine when transforming
return $transformed;
}
老实说,我找不到答案。另请注意,GD是强制性的。
答案 0 :(得分:4)
使用输出缓冲和捕获imagepng的输出应该可以工作,如下所示:
function transform($unTransformed) {
ob_start();
imagepng($unTransformed);
$transformed = ob_get_clean();
return $transformed;
}
当然,这假设你实际上想要一个包含图像文件的png字节流的变量。如果唯一的目的是输出它,不要打扰并按照Marty McVry的建议去做。
答案 1 :(得分:2)
直接来自PHP手册:(imagepng()
- 函数,它将PNG图像输出到浏览器或文件中)
header('Content-Type: image/png');
$transformed = imagepng($untransformed);
您可能会在发送标题时遇到问题,因此可能需要在其他位置输出标题或将imagepng
创建的流转换为base64字符串并显示图像,具体取决于其他你的代码。