设为首页收藏本站
天天打卡

 找回密码
 立即注册
搜索
查看: 56|回复: 10

GD库实现webp转换jpg的PHP程序

[复制链接]

3

主题

67

回帖

201

积分

中级会员

积分
201
发表于 2024-4-20 09:41:55 | 显示全部楼层 |阅读模式
目录

PHP程序来执行webp格式转换成jpg格式有几种方法:一是安装imagemagick实现,二是安装GD库实现,可以直接用dwebp命令。本文我们将介绍使用PHP的图像处理库GD,编写一个简单的PHP程序来完成这个任务。
首先,确保你的PHP环境已经安装了GD库。你可以通过运行`php -m`命令来检查是否已安装。
接下来,在你的PHP代码中,你需要使用`imagecreatefromwebp()`函数来创建一个GD图像资源,将webp格式的图片加载进来。然后,你可以使用`imagejpeg()`函数将该GD图像资源以jpg格式保存到指定路径。

webp转换jpg的PHP程序
  1. $webpPath = 'input.webp'; // webp图片的路径
  2. $jpgPath = 'output.jpg'; // 转换后的jpg图片的保存路径

  3. // 创建GD图像资源
  4. $image = imagecreatefromwebp($webpPath);

  5. // 保存为jpg图片
  6. imagejpeg($image, $jpgPath, 100); // 第三个参数是JPG图片质量,范围为0-100,100表示最高质量

  7. // 释放资源
  8. imagedestroy($image);

  9. echo "转换完成!";
复制代码
将上述代码保存为一个PHP文件(比如`webp2jpg.php`),然后在浏览器中访问该文件,即可执行webp格式转换成jpg格式的任务。请确保在`$webpPath`中填写正确的webp图片路径以及在`$jpgPath`中指定保存路径。
需要注意的是,使用GD库进行webp到jpg格式转换可能会导致一些质量损失,因为webp(有损压缩)和jpg(有损压缩)采用了不同的压缩算法。如果你需要更高质量的转换,建议安装libwebp扩展或使用其他专门处理webp格式的工具。
希望这个简单的示例能帮助你理解如何编写用PHP将webp格式转换成jpg格式的程序。

PHP imagecreatefromwbmp()

imagecreatefromwbmp()函数是PHP中的内置函数,用于从WBMP文件或URL创建新图像。 WBMP(无线应用协议位图格式)是为移动计算设备优化的单色图形文件格式。可以在程序中进一步处理此加载的图像。从WBMP文件加载图像后要编辑图像时,通常使用此函数。可以使用imagewbmp()函数将图像转换为WBMP。
用法:
  1. resource imagecreatefromwbmp( string $filename )
复制代码
参数:该函数接受单个参数$filename,该参数保存图像的名称。
返回值:成功时此函数返回图像资源标识符,错误时返回FALSE。

gd库


一、什么是gd库?

GD库是一组用于创建和处理各种图像格式的库函数,是PHP中最为常用的图像处理库之一。

二、安装GD库

在CentOS/RedHat下安装GD库
1.安装PHP的GD扩展库
  1. yum install php-gd
复制代码
2.重启web服务器
  1. service httpd restart
复制代码
3.查看PHP支持的GD库版本
  1. php -i | grep -i gd
复制代码
在Ubuntu/Debian下安装GD库
1.安装php5-gd模块
  1. apt-get update && apt-get install php5-gd
复制代码
2.重启web服务器
  1. service apache2 restart
复制代码
3.查看PHP支持的GD库版本
  1. php -i | grep -i gd
复制代码
三、GD库的基本操作

1.创建图像
1)创建一个200X200像素的黑色图像
  1. $image = imagecreate(200,200);
  2. $black = imagecolorallocate($image,0,0,0);
  3. imagefill($image,0,0,$black);
复制代码
2)在图像中添加文本
  1. $white = imagecolorallocate($image,255,255,255);
  2. $text = 'Hello, GD!';
  3. imagettftext($image,20,0,70,100,$white,'arial.ttf',$text);
复制代码
3)保存图像到文件
  1. imagepng($image,'test.png');
复制代码
4)释放内存
  1. imagedestroy($image);
复制代码
2.图像处理
1)缩放图像
  1. $src_image = imagecreatefrompng('test.png');
  2. $src_width = imagesx($src_image);
  3. $src_height = imagesy($src_image);
  4. $new_width = $src_width * 0.5;
  5. $new_height = $src_height * 0.5;
  6. $new_image = imagecreatetruecolor($new_width,$new_height);
  7. imagecopyresampled($new_image,$src_image,0,0,0,0,$new_width,$new_height,$src_width,$src_height);
  8. imagepng($new_image,'test-resized.png');
复制代码
2)添加边框
  1. $border_color = imagecolorallocate($new_image,128,128,128);
  2. imagerectangle($new_image,0,0,$new_width-1,$new_height-1,$border_color);
  3. imagepng($new_image,'test-bordered.png');
复制代码
3)裁剪图像
  1. $cropped_image = imagecrop($new_image,['x'=>40,'y'=>40,'width'=>100,'height'=>100]);
  2. imagepng($cropped_image,'test-cropped.png');
复制代码
4)模糊图像
  1. $blurred_image = imagefilter($new_image,IMG_FILTER_GAUSSIAN_BLUR);
  2. imagepng($blurred_image,'test-blurred.png');
复制代码
3.操作图像元素
1)获取像素RGB值
  1. $pixel = imagecolorat($new_image,50,50);
  2. $red = ($pixel >> 16) & 0xFF;
  3. $green = ($pixel >> 8) & 0xFF;
  4. $blue = $pixel & 0xFF;
复制代码
2)修改像素RGB值
  1. $new_color = imagecolorallocate($new_image,255,0,0);
  2. imagesetpixel($new_image,50,50,$new_color);
  3. imagepng($new_image,'test-pixel.png');
复制代码
3)填充图像
  1. $fill_color = imagecolorallocate($new_image,0,255,0);
  2. imagefill($new_image,0,0,$fill_color);
  3. imagepng($new_image,'test-filled.png');
复制代码
四、GD库的高级操作

1.水印处理
1)添加文字水印
  1. $watermark_text = 'COPYRIGHT';
  2. $font_size = 20;
  3. $font_color = imagecolorallocate($new_image,0,0,0);
  4. imagettftext($new_image,$font_size,0,10,20,$font_color,'arial.ttf',$watermark_text);
  5. imagepng($new_image,'test-watermark.png');
复制代码
2)添加图片水印
  1. $watermark_image = imagecreatefrompng('watermark.png');
  2. $watermark_width = imagesx($watermark_image);
  3. $watermark_height = imagesy($watermark_image);
  4. $pos_x = ($new_width - $watermark_width) / 2;
  5. $pos_y = ($new_height - $watermark_height) / 2;
  6. imagecopy($new_image,$watermark_image,$pos_x,$pos_y,0,0,$watermark_width,$watermark_height);
  7. imagepng($new_image,'test-watermark.png');
复制代码
2.画图操作
1)画直线
  1. $line_color = imagecolorallocate($new_image,0,0,255);
  2. imageline($new_image,0,0,$new_width,$new_height,$line_color);
  3. imagepng($new_image,'test-line.png');
复制代码
2)画矩形
  1. $rect_color = imagecolorallocate($new_image,0,255,0);
  2. imagerectangle($new_image,20,20,$new_width-20,$new_height-20,$rect_color);
  3. imagepng($new_image,'test-rectangle.png');
复制代码
3)画圆形
  1. $circle_color = imagecolorallocate($new_image,255,0,0);
  2. $circle_center_x = $new_width/2;
  3. $circle_center_y = $new_height/2;
  4. $circle_diameter = $new_height * 0.8;
  5. $circle_radius = $circle_diameter / 2;
  6. imageellipse($new_image,$circle_center_x,$circle_center_y,$circle_diameter,$circle_diameter,$circle_color);
  7. imagepng($new_image,'test-circle.png');
复制代码
总结

到此这篇关于GD库实现webp转换jpg的PHP程序的文章就介绍到这了,更多相关PHP的GD库实现webp转换jpg内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

1

主题

54

回帖

130

积分

等待验证会员

积分
130

热心会员付费会员

发表于 2024-4-26 21:51:16 | 显示全部楼层
我不确定这个信息的准确性,请再确认一下
  • 打卡等级:即来则安
  • 打卡总天数:27
  • 打卡月天数:0
  • 打卡总奖励:424
  • 最近打卡:2024-08-20 23:24:38

6

主题

58

回帖

722

积分

高级会员

积分
722
发表于 2024-4-28 07:54:20 来自手机 | 显示全部楼层
谢谢楼主分享

0

主题

45

回帖

91

积分

注册会员

积分
91
发表于 2024-5-15 08:26:18 | 显示全部楼层
确实牛逼

0

主题

51

回帖

103

积分

注册会员

积分
103
发表于 2024-6-4 20:59:24 | 显示全部楼层
同意你的观点,我们有共鸣。

0

主题

37

回帖

75

积分

注册会员

积分
75
发表于 2024-6-23 12:18:14 | 显示全部楼层
说得太好了,完全同意!

1

主题

58

回帖

134

积分

注册会员

积分
134
发表于 2024-7-13 09:48:12 | 显示全部楼层
6666666666

19

主题

54

回帖

501

积分

高级会员

积分
501

推广达人宣传达人热心会员付费会员

发表于 2024-9-1 08:01:43 | 显示全部楼层
我完全同意你的观点

0

主题

37

回帖

76

积分

等待验证会员

积分
76

热心会员付费会员

发表于 2024-9-3 10:41:22 | 显示全部楼层
我们一起努力,共同解决问题吧。

1

主题

50

回帖

110

积分

注册会员

积分
110
发表于 2024-9-28 16:53:42 | 显示全部楼层
友善的讨论氛围是非常重要的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱云论坛 - d.taiji888.cn - 技术学习 免费资源分享 ( 蜀ICP备2022010826号 )|天天打卡

GMT+8, 2024-11-15 09:11 , Processed in 0.094336 second(s), 28 queries .

Powered by i云网络 Licensed

© 2023-2028 正版授权

快速回复 返回顶部 返回列表