【问题标题】:Transform .jpg, .jpeg or .gif to .png without saving them on machine将 .jpg、.jpeg 或 .gif 转换为 .png,而不将它们保存在机器上
【发布时间】:2013-04-02 06:50:52
【问题描述】:

是否可以在 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 是强制性的。

【问题讨论】:

标签: php image png gd transform


【解决方案1】:

直接来自 PHP 手册:(imagepng()-function,将 PNG 图像输出到浏览器或文件)

header('Content-Type: image/png');
$transformed = imagepng($untransformed);

您可能会在发送标头时遇到问题,因此可能需要将标头输出到其他地方或将imagepng 创建的流转换为base64 字符串并像这样显示图像,具体取决于您的其余部分代码。

【讨论】:

    【解决方案2】:

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

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

    当然,这是假设您实际上想要一个包含图像文件的 png 字节流的变量。如果唯一的目的是无论如何输出它,请不要打扰并按照 Marty McVry 的建议进行操作。

    【讨论】:

    • 这似乎是错误 :S 无论如何,我需要对其进行一些着色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2012-01-25
    • 2013-01-04
    • 2011-05-11
    • 2011-03-21
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多