php png压缩为png,使用PHP将PNG转换为JPG压缩?

小心你想要转换的东西。 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小时一次) ,而且他们的工作非常好:-)

<?php class ThumbHandler { var $dst_img;// 目标文件 var $h_src; // 图片资源句柄 var $h_dst;// 新图句柄 var $h_mask;// 水印句柄 var $img_create_quality = 100;// 图片生成质量 var $img_display_quality = 80;// 图片显示质量,默认为75 var $img_scale = 0;// 图片缩放比例 var $src_w = 0;// 原图宽度 var $src_h = 0;// 原图高度 var $dst_w = 0;// 新图总宽度 var $dst_h = 0;// 新图总高度 var $fill_w;// 填充图形宽 var $fill_h;// 填充图形高 var $copy_w;// 拷贝图形宽 var $copy_h;// 拷贝图形高 var $src_x = 0;// 原图绘制起始横坐标 var $src_y = 0;// 原图绘制起始纵坐标 var $start_x;// 新图绘制起始横坐标 var $start_y;// 新图绘制起始纵坐标 var $mask_word;// 水印文字 var $mask_img;// 水印图片 var $mask_pos_x = 0;// 水印横坐标 var $mask_pos_y = 0;// 水印纵坐标 var $mask_offset_x = 5;// 水印横向偏移 var $mask_offset_y = 5;// 水印纵向偏移 var $font_w;// 水印字体宽 var $font_h;// 水印字体高 var $mask_w;// 水印宽 var $mask_h;// 水印高 var $mask_font_color = "#ffffff";// 水印文字颜色 var $mask_font = 2;// 水印字体 var $font_size;// 尺寸 var $mask_position = 0;// 水印位置 var $mask_img_pct = 50;// 图片合并程度,值越大,合并程序越低 var $mask_txt_pct = 50;// 文字合并程度,值越小,合并程序越低 var $img_border_size = 0;// 图片边框尺寸 var $img_border_color;// 图片边框颜色 var $_flip_x=0;// 水平翻转次数 var $_flip_y=0;// 垂直翻转次数 var $cut_type=0;// 剪切类型 var $img_type;// 文件类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值