由于项目要求需要将jpg、png类型的图片  转换成webp格式,最开始使用了php gd类库里 imagewebp 方法实现,结果发现转换成的webp格式文件会偶尔出现空白内容的情况。像创建了一个透明图层的图片,但是尺寸和内存确跟转换成功的文件一般无二。

初想,可以找个办法判断一下图片是否无效的,网上找各种办法,结果无果。虽然失败了但是还是上一下代码,期待大神能协助完善方法。

function imgToWebp($file=''){

    if(is_file($file)){
$img = getimagesize($file);
$type = $img['mime'];
if($type == 'image/jpeg'){
$file_source = imagecreatefromjpeg($file);
}
elseif($type == 'image/png'){
$file_source = imagecreatefrompng($file);
}
else{
return false;
}
$i = strripos($file,'.');
$newFileName = substr($file,0,$i+1).'webp';
$ret = imagewebp($file_source,$newFileName,'80');
return $ret;
}
}

使用前提条件为,php版本>=5.5  以上,并且开启gd类库。

上面这个方法的成功率不怎么高,欢迎指错。由于成功率不高,我果断换了实现方式。

既然php无法帮助我完成任务,自然要让linux上的第三方类库帮我实现格式转换,所以找到了 libwebp库。

1.首先安装类型支持

#ubuntu
apt-get install webp #centos
yum -y install libwebp-devel libwebp-tools

安装完毕你的系统中将获得三个工具(另外 vwebp、webpmux   待学习中)

1. cwebp   如需帮助请 cwebp --help,贴一条示例转换命令:

cwebp -q 50 ~/***.jpg -o ***.webp

2. dwebp  将webp文件转换成jgp、png,同上帮助:dwebp --help

dwebp ~/***.webp -o ~/***.png

3. gif2webp gif图片资源转成webp

cwebp -q 50 ~/***.gif -o ***.webp

有了系统的类库支持,程序直接抛命令给linux处理就可以了,我这用的是php,记得要是线上模式你的php环境可能已经把exec、system等函数禁用了,查看你的php.ini,disable_funcitons配置项。提醒:禁用函数开启将增加服务器的安全风险,所以还请程序中做好参数的校验工作,确保你的过滤后命令不会造成不必要的损失。

欢迎大牛随时批评及指正!!!

另外需要确定你的服务器上安装了 libpng、libjpeg等支持包。

centos下 将(jgp、png)图片转换成webp格式的更多相关文章

  1. jpg、png格式的图片转换成webp后颜色失真的问题

    今天简单的试用了一下 cweb.exe 将 jpg, png 格式的图片转换成 webp 格式. 我今天下载的是当前最新版:1.0.0 cwebp 3.jpg  -q 85 -o 3.webp 发现图 ...

  2. ABBYY如何把图片转换成pdf格式

    在制作工作文件的时候,有时候会遇到需要进行文件格式转换的情况,比较常见的文件格式转换就包含了Office与pdf格式之间的转换.但除此之外,图片与pdf格式也是可以进行转换的,那么图片要怎么操作,才能 ...

  3. data:image/png;base64 上传图像将图片转换成base64格式

    大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJ ...

  4. 如何将.jpg图片 转换成.eps 格式图片

    在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身 ...

  5. FFMpeg笔记(一) 使用FFmpeg将任意格式图片转换成任意格式图片

    void SrcToDest(char* pSrc, char* pDest,unsigned int nSrcWidth, unsigned int nSrcHeight, AVPixelForma ...

  6. 如何将JPG格式的图片转换成PNG格式

    study from : https://jingyan.baidu.com/article/6079ad0e63a4fc28ff86db37.html

  7. 将jpg压缩成webp格式的图片

    cwebp名称 cwebp -压缩图像文件为的WebP文件概要 cwebp [选项] INPUT_FILE -o output_file.webp描述 cwebp压缩使用的WebP格式的图像.输入格式 ...

  8. android将drawable下的图片转换成bitmap

    将drawable下的图片转换成bitmap 1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xx ...

  9. Android 将drawable下的图片转换成bitmap、Drawable

    将drawable下的图片转换成bitmap . Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xxx ...

随机推荐

  1. Java文件与io——File类

    概念: File类:表示文件和目录路径名的抽象表示形式. File类可以实现文件的创建.删除.重命名.得到路径.创建时间等等,是唯一与文件本身有关的操作类. 例: public class FileD ...

  2. 使用WinSCP上传文件到linux系统

    1.安装WinSCP 2.新建脚本test.txt option confirm off open username:password@host put C:\test\a.zip /home/tes ...

  3. .net中Response.End() 和Response.Redirect("http://dotnet.aspx.cc");

    问:什么情况下需要Response.End()语句,加这句有什么好处 答: 首先你要理解Response.End()的意思,它的意思是终止执行下面的语句!但有时不加和加上都一样,但还要加上好,为什么呢 ...

  4. SQL语句创建数据库以及一些查询练习

    --创建 MyCompany数据库 use master execute sp_configure 'show advanced options',1 --开启权限 reconfigure execu ...

  5. hibernate课程 初探单表映射1-7 hibernate配置文件新建

    hibernate  配置文件新建 1 右键src==>new==>other==>hibernate configuration File==>next==>next= ...

  6. Vue2.0搭建脚手架(vue-cli)

    一.安装node.js 进入官网下载node.js 二.安装 cnpm 1.说明:npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理 ...

  7. 配置海康IPC或大华IPC通过路由器公网访问

    设备:路由器DLink-DIR-600M,海康IPC:DS-2CD864FWD-E 海康默认端口为8000,HTTP访问为80,RTSP访问端口为554. 配置分成两步,分别为配置IPC相关网络参数和 ...

  8. 用sql语句按周、按月、按季、按年统计

    --按mySql语法统计按周,月,季,年.income为合计的价格字段,createDate为交易时间. select sum(income)as revenue,week(createDate) a ...

  9. docker使用alpine系统构建tomcat镜像

    FROM frolvlad/alpine-oraclejdk8 #此镜像使用alpine-glibc系统,精简jdk,只运行java程序,无法编译/构建 MAINTAINER huqiang:2018 ...

  10. Coursera 算法二 week2 Seam Carving

    这周作业设计到的算法是有向无环图的最短路径算法,只需要按照顶点的拓扑顺序去放松顶点即可.而在这个题目中拓扑顺序就是按照行的顺序或列的顺序. 用到的数据结构为一个二维数组picture同来存储每个像素的 ...