小心你想要转换的东西。 JPG不支持Alpha透明,而PNG则支持。 你会失去这些信息。
要转换,您可以使用以下function:
// Quality is a number between 0 (best compression) and 100 (best quality) function png2jpg($originalFile, $outputFile, $quality) { $image = imagecreatefrompng($originalFile); imagejpeg($image, $outputFile, $quality); imagedestroy($image); }
该函数使用GD库中的imagecreatefrompng()和imagejpeg()函数。
这样做安全地将PNG转换为JPG,透明度为白色。
$image = imagecreatefrompng($filePath); $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); $quality = 50; // 0 = worst / smaller file, 100 = better / bigger file imagejpeg($bg, $filePath . ".jpg", $quality); imagedestroy($bg);
这是一个小例子,将以70%的图像质量将“image.png”转换为“image.jpg”
希望有所帮助
这是一个非常好的缩略图脚本=)下面是一个例子:
$ path =原始图片所在文件夹的path。 $ name =要制作缩略图的文件的文件名。 $ thumbpath =要将缩略图保存到的目录的path。 $ maxwidth = PX中缩略图的最大宽度,例如。 100(这将是100px)。
createThumbnail($path, $name, $thumbpath, $maxwidth);
你可能想看看Image Magick ,通常被认为是事实上的image processing标准库。 是否需要安装额外的PHP模块,不知道是否有/默认安装。
HTH。
PHP具有一些image processingfunction以及imagecreatefrompng和imagejpegfunction 。 第一个将创build一个PNG图像文件的内部表示,而第二个用于将该表示保存为JPEG图像文件。
看到这个PHP图像库列表 。 基本上是GD或Imagemagick。
我知道这不是一个确切的答案,但作为答案已经给出…
你真的需要在PHP中这样做吗?
我的意思是:如果你需要转换大量的图像,用PHP做的可能不是最好的方法:你将遇到memory_limit , max_execution_time ,…
我也会说GD可能不会给你最好的质量/尺寸比例; 但不知道(如果你做GD和其他解决scheme之间的比较,我对结果非常感兴趣;-))
另一种不使用PHP的方法是通过命令行使用Image Magick (而不是像其他人推荐的PHP扩展)
你必须编写一个经过所有.png文件的shell脚本,并将它们提供给它们
convert为每个.png文件创build一个新的.jpg文件
或者mogrify直接在原文件上工作并覆盖它。
作为一个旁注:如果你直接在你的生产服务器上这样做,你可以在一堆转换之间放一些hibernate时间,让它冷却一下有时候^^
我已经使用了shell脚本+ convert / mogrify几次(让它们运行10小时一次) ,而且他们的工作非常好:-)