【问题标题】:Convert image format PNG to JPEG without saving to disk - PHP在不保存到磁盘的情况下将图像格式 PNG 转换为 JPEG - PHP
【发布时间】:2023-04-01 09:53:01
【问题描述】:
  • 我正在从以下网址获取 PNG 图像。
  • 我想在不使用 PHP 保存磁盘的情况下将 PNG 图像转换为 JPEG。
  • 最后我想将 JPEG 图像分配给 $content_jpg 变量。

     $url = 'http://www.example.com/image.png';
     $content_png = file_get_contents($url);
    
     $content_jpg=;
    

【问题讨论】:

  • “转换图像”是什么意思?如果要编辑图像,则不需要保存图像,只需输出即可。见:us1.php.net/manual/en/ref.image.php
  • 我在 Oxwall 做这个。转换后,我会将 jpg 图像保存到系统生成的位置。但我想知道在不写入磁盘的情况下将 png 图像内容($content_png)转换为 jpg 的可能性。这在我找到的教程中可以使用 C#。
  • @Josh,我想将图像格式从 PNG 更改为 JPEG。这就是我想要转换图像而不是编辑图像的意思。谢谢
  • @ShankarDamodaran,我会将图像输出到浏览器。如果您有比我们找到的更好的解决方案,请告诉我们。谢谢。

标签: php gdlib


【解决方案1】:

简单的回答是,

// PNG image url
$url = 'http://www.example.com/image.png';

// Create image from web image url
$image = imagecreatefrompng($url);

// Start output buffer
ob_start(); 

// Convert image
imagejpeg($image, NULL,100);
imagedestroy($image);

// Assign JPEG image content from output buffer
$content_jpg = ob_get_clean();

【讨论】:

    【解决方案2】:

    您想为此使用gd library。这是一个示例,它将采用 png 图像并输出 jpeg 图像。如果图像是透明的,则透明度将改为白色。

    <?php
    
    $file = "myimage.png";
    
    $image = imagecreatefrompng($file);
    $bg = imagecreatetruecolor(imagesx($image), imagesy($image));
    
    imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
    imagealphablending($bg, TRUE);
    imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
    imagedestroy($image);
    
    header('Content-Type: image/jpeg');
    
    $quality = 50;
    imagejpeg($bg);
    imagedestroy($bg);
    
    ?>
    

    【讨论】:

    • 函数 imagecreatefrompng 也可以接受 url。所以我已经将 url 传递给函数而不是文件。此代码按预期工作,并将 JPEG 文件输出到浏览器。非常感谢乔希。
    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多