今天简单的试用了一下 cweb.exe 将 jpg, png 格式的图片转换成 webp 格式。

我今天下载的是当前最新版:1.0.0

cwebp 3.jpg  -q 85 -o 3.webp

发现图片中的女模特原来粉红色的指甲颜色有失真的情况:变暗了。

这个情况与使用 ffmpeg 将多张jpg图片生成 mp4 视频的时候出现的颜色失真有点类似。

jpg格式:

转换成webp格式后:

百度了一下 webp 颜色失真,找了一篇关于颜色失真的讨论,但没有答案:http://www.cocoachina.com/bbs/read.php?tid=332365

图片上传到服务器不能太大,所以先做等比例压缩,但是压缩后再转webp图片就变色。求大家指教。。。。
ps:不管裁剪,压缩,转webp后都会变色,只有原图转才没问题

另外一篇提到:http://weixin.niurenqushi.com/article/2017-05-23/4859725.html

因为 JPEG 采用的色彩格式是 YUVJ420P,对应的色彩区间是 -,而 WebP 采用的色彩格式是 YUV420P,对应的色彩区间是 -,也就是说如果单纯的转码,会丢失 -,- 的色彩,也就是出现了色差。

虽然从产品角度来看,这样的色差是可以容忍的,但是从技术角度,我们当然是希望可以有解决色差的方法,进一步跟进发现,cwebp 提供了一个 “-metadata” 的参数,
可以将原图的额外信息复制到 WebP 图像上,虽然会增加额外的存储空间,但是可以保证视觉体验与原图一致,并且增加的空间也仅限于保存原图的额外信息那一部分。
通过增加 "-metadata all", 转码后的 WebP 图像消去了色差 该参数有 “all, none, exif, icc, xmp” 五种可选项,默认是 none,支持 exif, icc, xmp 三种类型或其任意组合的信息保留,
例如,上述 JPEG 原图额外信息正是 ICC Profile 信息,可以使用 "-metadata icc" 或者 "-metadata all" 保证转码质量。

但是我测试  -metadata all ,发现还是存在色差问题。

google了一下,找到一篇:https://groups.google.com/a/webmproject.org/forum/#!topic/webp-discuss/TtX0JB-kyUE

下面摘取了一部分内容:

'cwebp'的默认编码参数是使用有损编码。
这意味着源图像和压缩图像之间的小的(希望无法察觉的)差异是不可避免的。当提升-q参数值时,差异在幅度上越来越小。
尽管如此,即使在q = 100时,也可以得到+/- 1的差异(主要是因为颜色空间转移:RGB < - > YUV,这会产生一些舍入误差)。 如果压缩为JPEG格式,您会遇到类似的差异。
当使用 -lossless 选项时,颜色失真不会发生。

但是生成的webp文件很大。

2018-10-10

https://bugs.chromium.org/p/webp/issues/detail?id=232

-pre 4  或 -sharp_yuv
效果好多了,色差就不显的那么明显了。 但是另一张图片上的粉红色的文字还是有明显的色差。

webp格式:https://img.alicdn.com/tps/i3/0/TB2flVsaOMnBKNjSZFCXXX0KFXa_!!0-juitemmedia.jpg_800x800q90.jpg_.webp

jpg格式:https://img.alicdn.com/tps/i3/0/TB2flVsaOMnBKNjSZFCXXX0KFXa_!!0-juitemmedia.jpg_800x800q90.jpg

名品推荐:汉尚华莲 清歌 伊木子

jpg、png格式的图片转换成webp后颜色失真的问题的更多相关文章

  1. centos下 将(jgp、png)图片转换成webp格式

    由于项目要求需要将jpg.png类型的图片  转换成webp格式,最开始使用了php gd类库里 imagewebp 方法实现,结果发现转换成的webp格式文件会偶尔出现空白内容的情况.像创建了一个透 ...

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

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

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

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

  4. 【caffe-windows】 caffe-master 之 训练自己数据集(图片转换成lmdb or leveldb)

    前期准备: 文件夹train:此文件夹中按类别分好子文件夹,各子文件夹里存放相应图片 文件夹test:同train,有多少类就有多少个子文件夹 trainlabels.txt : 存的是训练集的标签  ...

  5. java将图片转换成二进制

    package com.oumyye.图片; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; imp ...

  6. C#图片转换成二进制流并且保存到sql server数据库

    注意:我要存储文件二进制流的列的类型是text,不是image类型. 我已经实现了从数据库中读取text类型的二进制流,,现在就是不知道怎么存进去. 我的部分关键代码: StreamReader sr ...

  7. 【caffe-windows】 caffe-master 之图片转换成lmdb or leveldb

    前期准备: 文件夹train:此文件夹中按类别分好子文件夹,各子文件夹里存放相应图片 文件夹test:同train,有多少类就有多少个子文件夹 trainlabels.txt : 存的是训练集的标签  ...

  8. 使用CSS将图片转换成黑白(灰色、置灰)z转

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.c ...

  9. Python:将utf-8格式的文件转换成gbk格式的文件

    需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.ope ...

随机推荐

  1. 质量:“PM,你怎么可以放弃我?!”

    最近遇到一件有趣的事儿,一位文玩老友为了攒一串多宝,新得几颗高品松石,开心不已与我们分享.闲扯中,他说出了攒多宝的要求: 直径偏差2mm以内 每种品类的珠子都要是高品 品类只能是南红(满色满肉).蜜蜡 ...

  2. 伙伴系统之避免碎片--Linux内存管理(十六)

    1 前景提要 1.1 碎片化问题 分页与分段 页是信息的物理单位, 分页是为了实现非连续分配, 以便解决内存碎片问题, 或者说分页是由于系统管理的需要. 段是信息的逻辑单位,它含有一组意义相对完整的信 ...

  3. mybatis配置文件说明(configuration)

    1. xml结构(可查看mybatis-3-config.dtd) <!ELEMENT configuration (properties?, settings?, typeAliases?, ...

  4. 既然CPU同一时间只能执行一个线程,为什么存在并发问题

    一点小疑惑终于解开啦 1.CPU的时间是按时间片分的,而不是一个时间点,并发问题是由于CPU线程切换导致的. 现在假设有一段代码 if(i == 1) { i++; //断点1 system.out. ...

  5. 我的第一个python web开发框架(33)——接口代码重构

    前面ORM模块我们已经完成了开发,接下来要做的就是对项目代码进行重构了.因为对底层数据库操作模块(db_helper.py)进行了改造,之前项目的接口代码全都跑不起来了. 在写ORM模块时,我们已经对 ...

  6. 比较两个slice、struct或者map是否相等

    我们可以直接使用reflect.DeepEqual来比较两个slice.struct或者map是否相等 package main import ( "fmt" "refl ...

  7. Golang 入门系列(七) Redis的使用

    安装 1. Redis 的安装很简单,我这里测试直接用的是windows 的版本.如何安装就不细说了.想了解的可以看之前的文章:https://www.cnblogs.com/zhangweizhon ...

  8. 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法

    作为一个程序员,一个中国的程序员,想来“乱码”问题基本上都遇到过,也为之头疼过.出现乱码问题的根本原因是编码与解码使用了不同而且不兼容的“标准”,在国内一般出现在中文的编解码过程中. 我们平时常见的编 ...

  9. 【Swift 4.0】iOS 11 UICollectionView 长按拖拽删除崩溃的问题

    正文 功能 用 UICollectionView 实现两个 cell 之间的位置交互或者拖拽某个位置删除 问题 iOS 11 以上拖拽删除会崩溃,在 iOS 9.10 都没有问题 错误 017-10- ...

  10. 在OSGI容器Equinox中嵌入HttpServer

    原文地址:https://liugang594.iteye.com/blog/1328050 简单介绍一下如何在一个osgi的bundle中内嵌使用http服务 一.基础 首先看看在OSGI中怎么启动 ...