是否可以在php中将.jpg、.jpeg或.gif图像转换为.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是强制性的。

最佳答案

使用输出缓冲和捕获imagepng的输出应该可以工作,如下所示:

function transform($unTransformed) {
    ob_start();
    imagepng($unTransformed);
    $transformed = ob_get_clean();
    return $transformed;
}

当然,这是假设您实际上需要一个包含图像文件的png bytestream的变量。如果唯一的目的是输出它无论如何,不要麻烦和做马蒂麦克弗里建议。

07-26 09:36