/ \\/ \/ _ \/ _ )/ _ \
\ / __/ _ \ __/
\__\__/\____/\_____/__/ ____ ___
/ _/ / \ \ / _ \/ _/
/ \_/ / / \ \ __/ \__
\____/____/\_____/_____/____/v1.0.2
WebP 编解码器:用于编码和解码 WebP 格式图像的库。此包包含可在其他程序中使用的库以添加 WebP 支持,以及命令行工具 ‘cwebp’ 和 ‘dwebp’。
参见 http://developers.google.com/speed/webp
最新的源码树可在 https://chromium.googlesource.com/webm/libwebp 获取
它基于与 WebM 项目相同的许可证发布。 详见 http://www.webmproject.org/license/software/ 或 “COPYING” 文件。额外的知识产权 授权可在 PATENTS 文件中找到。
通过运行:
nmake /f Makefile.vc CFG=release-static RTLIBCFG=static OBJDIR=output
目录 output\release-static(x64|x86)\bin 将包含工具 cwebp.exe 和 dwebp.exe。目录 output\release-static(x64|x86)\lib 将 包含 libwebp 静态库。 目标架构(x86/x64)由 Makefile.vc 从系统路径中可用的 Visual Studio 编译器(cl.exe)检测。
在安装了 GNU 工具(gcc 和 make)的平台上,运行
make -f makefile.unix
将构建二进制文件 examples/cwebp 和 examples/dwebp,以及 静态库 src/libwebp.a。不提供系统范围的安装, 因为这是基于 autoconf 工具的完整安装系统的简单替代方案(见下文)。 请参考 makefile.unix 以获取更多详细信息和自定义。
前提条件: 一个编译器(如 gcc)、make、autoconf、automake、libtool。 在 Debian 类系统上,以下命令应安装最小构建所需的一切: $ sudo apt-get install gcc make autoconf automake libtool
当从 git 源码构建时,您需要运行 autogen.sh 来生成配置脚本。
./configure make make install
应该就是安装以下文件所需的全部步骤
/usr/local/include/webp/decode.h /usr/local/include/webp/encode.h /usr/local/include/webp/types.h /usr/local/lib/libwebp.* /usr/local/bin/cwebp /usr/local/bin/dwebp
已安装。
注意:一个仅解码的库 libwebpdecoder 可通过 ‘--enable-libwebpdecoder’ 标志获得。编码库是单独构建的,可以 通过对相应的 Makefile.am 配置文件进行微小修改来独立安装(参见其中的注释)。有关更多选项,请参见 ‘./configure --help’。
MIPS Linux 工具链稳定版可在以下地址找到: https://community.imgtec.com/developers/mips/tools/codescape-mips-sdk/available-releases/
export PATH=$PATH:/path/to/toolchain/bin
HOST=mips-mti-linux-gnu
MIPS_CFLAGS="-O3 -mips32r5 -mabi=32 -mtune=p5600 -mmsa -mfp64
-msched-weight -mload-store-pairs -fPIE"
MIPS_LDFLAGS="-mips32r5 -mabi=32 -mmsa -mfp64 -pie"
HOST=mips-img-linux-gnu
MIPS_CFLAGS="-O3 -mips64r6 -mabi=64 -mtune=i6400 -mmsa -mfp64
-msched-weight -mload-store-pairs -fPIE"
MIPS_LDFLAGS="-mips64r6 -mabi=64 -mmsa -mfp64 -pie"
./configure --host=${HOST} --build=config.guess
CC="${HOST}-gcc -EL"
CFLAGS="$MIPS_CFLAGS"
LDFLAGS="$MIPS_LDFLAGS"
make
make install
使用 CMake,您可以编译 libwebp、cwebp、dwebp、gif2web、img2webp、webpinfo 以及 JS 绑定。
前提条件: 一个编译器(如带 autotools 的 gcc)和 CMake。 在 Debian 类系统上,以下命令应安装最小构建所需的一切: $ sudo apt-get install build-essential cmake
当从 git 源码构建时,您需要运行 cmake 来生成 makefile。
mkdir build && cd build && cmake ../ make make install
如果您还需要任何可执行文件,则需要通过 CMake 启用它们,例如:
cmake -DWEBP_BUILD_CWEBP=ON -DWEBP_BUILD_DWEBP=ON ../
或通过您喜欢的界面(如 ccmake 或 cmake-qt-gui)。
使用选项 -DWEBP_UNICODE=ON 为 Windows 提供 Unicode 支持(使用 chcp 65001)。
最后,安装后,您还可以通过以下方式在 CMake 项目中使用 WebP:
find_package(WebP)
这将定义 CMake 变量 WebP_INCLUDE_DIRS 和 WebP_LIBRARIES。
对 Gradle 的支持是最低限度的:它仅帮助您编译 libwebp、cwebp、dwebp 和 webpmux_example。
前提条件: 一个编译器(如带 autotools 的 gcc)和 gradle。 在 Debian 类系统上,以下命令应安装最小构建所需的一切: $ sudo apt-get install build-essential gradle
当从 git 源码构建时,您需要用合适的目标运行 Gradle 包装器,例如:
./gradlew buildAllExecutables
要生成来自 swig/libwebp.swig 的语言绑定,至少需要 swig-1.3 (http://www.swig.org)。
当前以下函数被映射: 解码: WebPGetDecoderVersion WebPGetInfo WebPDecodeRGBA WebPDecodeARGB WebPDecodeBGRA WebPDecodeBGR WebPDecodeRGB
编码: WebPGetEncoderVersion WebPEncodeRGBA WebPEncodeBGRA WebPEncodeRGB WebPEncodeBGR WebPEncodeLosslessRGBA WebPEncodeLosslessBGRA WebPEncodeLosslessRGB WebPEncodeLosslessBGR
详见 swig/README 获取更详细的构建说明。
Java 绑定:
要构建 swig 生成的 JNI 包装代码,至少需要 JDK-1.5(或等价版本)以支持枚举。输出预期为一个共享对象/DLL,可通过 System.loadLibrary("webp_jni") 加载。
Python 绑定:
要构建 swig 生成的 Python 扩展代码,至少需要 Python 2.6。 Python < 2.6 可能通过对 libwebp.swig 或生成的代码进行微小修改来构建,但未经测试。
examples/ 目录包含用于编码(cwebp)和解码(dwebp)图像的工具。
最简单的使用方式如下: cwebp input.png -q 80 -o output.webp 这将使用质量因子 80(0->100 尺度,0 为最低质量,100 为最佳。默认值为 75)将输入文件转换为 WebP 文件。 您可能也想尝试 -lossless 标志,它将在不损失任何信息的情况下压缩源(RGBA 格式)。在这种情况下,-q 质量参数将控制尝试使输出文件尽可能小的处理时间。
更多选项可通过 -longhelp 命令行标志获得:
cwebp -longhelp 用法: cwebp [-preset <...>] [options] in_file [-o out_file]
如果未指定图像的输入尺寸(-s),则假定为 PNG、JPEG、TIFF 或 WebP 文件。
选项: -h / -help ............. 简短帮助 -H / -longhelp ......... 详细帮助 -q ............. 质量因子(0:小..100:大),默认=75 -alpha_q ......... 透明度压缩质量(0..100), 默认=100 -preset ....... 预设设置,可选: default, photo, picture, drawing, icon, text -preset 必须放在首位,因为它会覆盖其他参数 -z ............... 激活无损预设,级别 [0:快, ..., 9:最慢]
-m ............... 压缩方法(0=快速,6=最慢),默认=4 -segments ........ 使用的段数(1..4),默认=4 -size ............ 目标大小(字节) -psnr .......... 目标 PSNR(dB,典型:42)
-s ......... YUV 输入的尺寸(宽度 x 高度) -sns ............. 空间噪声整形(0:关,100:最大),默认=50 -f ............... 滤波强度(0=关..100),默认=60 -sharpness ....... 滤波锐度(0:最锐..7:最不锐),默认=0 -strong ................ 使用强滤波代替简单滤波(默认) -nostrong .............. 使用简单滤波代替强滤波 -sharp_yuv ............. 使用更锐利(且更慢)的 RGB->YUV 转换 -partition_limit . 限制质量以适应第一个分区 512k 限制 (0=无劣化...100=完全) -pass ............ 分析遍数(1..10) -crop .. 用给定矩形裁剪图像 -resize ........ 调整图像大小(在任何裁剪之后) -mt .................... 如果可用则使用多线程 -low_memory ............ 减少内存使用(编码更慢) -map ............. 打印额外信息图 -print_psnr ............ 打印平均 PSNR 失真 -print_ssim ............ 打印平均 SSIM 失真 -print_lsim ............ 打印局部相似性失真 -d <file.pgm> .......... 转储压缩输出(PGM 文件) -alpha_method .... 透明度压缩方法(0..1),默认=1 -alpha_filter . 对 alpha 平面的预测滤波, 可选:none, fast(默认)或 best -exact ................. 保留透明区域中的 RGB 值,默认=关 -blend_alpha ..... 混合颜色与背景色 背景色表示为 RGB 值,以 十六进制书写,例如 0xc0e0d0 表示 red=0xc0 green=0xe0 和 blue=0xd0 -noalpha ............... 丢弃任何透明度信息 -lossless .............. 无损编码图像,默认=关 -near_lossless ... 使用近无损图像 预处理(0..100=关),默认=100 -hint ......... 指定图像特征提示, 可选:photo, picture 或 graph
-metadata ..... 逗号分隔的元数据列表,如果存在则 从输入复制到输出。 有效值:all, none(默认), exif, icc, xmp
-short ................. 精简打印信息 -quiet ................. 不打印任何内容 -version ............... 打印版本号并退出 -noasm ................. 禁用所有汇编优化 -v ..................... 详细输出,例如打印编码/解码时间 -progress .............. 报告编码进度
实验性选项: -jpeg_like ............. 大致匹配预期的 JPEG 大小 -af .................... 自动调整滤波强度 -pre ............. 预处理滤波器
您可能想尝试的主要选项,进一步调整视觉质量,包括: -preset -sns -f -m
即:
在 examples/dwebp.c 中有一个解码示例,它读取 .webp 文件并将其解码为 PNG 图像文件(以及其他格式)。这仅用于演示 API 的使用。您可以通过以下方式验证 test.webp 文件解码后是否与 test_ref.ppm 完全相同:
cd examples ./dwebp test.webp -ppm -o test.ppm diff test.ppm test_ref.ppm
完整的选项列表可通过 -h 获得:
dwebp -h 用法:dwebp in_file [options] [-o out_file]