centos下 将(jgp、png)图片转换成webp格式
由于项目要求需要将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格式的更多相关文章
- jpg、png格式的图片转换成webp后颜色失真的问题
今天简单的试用了一下 cweb.exe 将 jpg, png 格式的图片转换成 webp 格式. 我今天下载的是当前最新版:1.0.0 cwebp 3.jpg -q 85 -o 3.webp 发现图 ...
- ABBYY如何把图片转换成pdf格式
在制作工作文件的时候,有时候会遇到需要进行文件格式转换的情况,比较常见的文件格式转换就包含了Office与pdf格式之间的转换.但除此之外,图片与pdf格式也是可以进行转换的,那么图片要怎么操作,才能 ...
- data:image/png;base64 上传图像将图片转换成base64格式
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJ ...
- 如何将.jpg图片 转换成.eps 格式图片
在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身 ...
- FFMpeg笔记(一) 使用FFmpeg将任意格式图片转换成任意格式图片
void SrcToDest(char* pSrc, char* pDest,unsigned int nSrcWidth, unsigned int nSrcHeight, AVPixelForma ...
- 如何将JPG格式的图片转换成PNG格式
study from : https://jingyan.baidu.com/article/6079ad0e63a4fc28ff86db37.html
- 将jpg压缩成webp格式的图片
cwebp名称 cwebp -压缩图像文件为的WebP文件概要 cwebp [选项] INPUT_FILE -o output_file.webp描述 cwebp压缩使用的WebP格式的图像.输入格式 ...
- android将drawable下的图片转换成bitmap
将drawable下的图片转换成bitmap 1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xx ...
- Android 将drawable下的图片转换成bitmap、Drawable
将drawable下的图片转换成bitmap . Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xxx ...
随机推荐
- 洛谷2018寒假集训tg第二次比赛第二题Princess Principal题解
这算不算泄题啊...被kkk发现会咕咕咕吧. 题目大意:给定一个数列a,与常数n,m,k然后有m个询问,每个询问给定l,r.问在a[l]到a[r]中最少分成几段,使每段的和不超过k,如果无解,输出Ch ...
- Python Unittest - 根据不同测试环境跳过用例详解
本文章会讲述以下几个内容: 1.Unittest 如何跳过用例 2.如何使用sys.argv 3.自动化测试项目中如何一套代码多套环境运行 一.Unittest跳过用例 @unittest.skip( ...
- chapter03
import scala.collection.mutable.ArrayBuffer /** * Created by EX-CHENZECHAO001 on 2018-03-29. */class ...
- 剑指Offer——数组中出现次数超过一半的数字——一题多解
看题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- Python3.5 调用Ansible 执行命令
ansible.py #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import tempfile from collections ...
- Day1下午
T1 暴力50分 排A和B X,不用考虑X 用数组80分, 权值线段树.平衡树100, 一个函数? T2 打表 dp logn+1,+ 搜索,dp? txt..... T3 30分暴力和尽量均 ...
- JQuery notepad
ready:在文档加载后执行,在文档对象加载完毕后,页面完全显示后执行,把所有事件函数放在ready中加载是一种非常好的方法,ready() 函数不应与 <body onload="& ...
- oracle中scott用户下四个基本表SQL语句练习
--选择部门中30的雇员SELECT * from emp where DEPTNO=30;--列出所有办事员的姓名.部门.编号--采用内连接方式,也就是等值链接,也是最常用的链接SELECT ena ...
- oracle 清空数据库缓存
oracle 清除数据库缓存: alter system flush shared_pool ; alter system flush BUFFER_CACHE ;
- Error和Exception的区别?
Error和Exception都继承自Throwable类 二者不同之处在于: Exception: 1.可以是可控制的(checked)或是不可控制的(unchecked) 2.表示一个有程序员编写 ...