上篇我们详细介绍了图片质量压缩的相关内容和算法,接下来的下篇给大家介绍一下图片的尺寸压缩和常用的几种尺寸压缩算法。
双三次采样:
这两种算法的上下采样结果从肉眼上看差距很小,但是从理论上来说 Lanczos 算法处理出来的图片应该是更加平滑少锯齿的。
同样的,Lanczos 算法在 ffmpeg 的 libswscale/swscale.c 中也有实现。其实不光 Lanczos 和上面的三种算法,ffmpeg 还提供了其他的图像重采样方法,诸如 area averaging、Gaussian 等等,通过编译好的 ffmpeg 库调用这些算法处理图片的命令如下:
七、四种算法对二值化图片的处理表现
这四种图片重采样算法在处理二值化图片上面的表现差异较大,我们先看看下采样的对比:
原图:
邻近采样:
双线性采样:
双三次采样:
Lanczos 采样:
下采样的对比一目了然,从上到下的图像表现效果逐渐变优,Lanczos 算法处理后的图像质量属于最优,接着我们看看这四种算法的上采样对比:
原图:
邻近采样:
双线性采样:
双三次采样:
Lanczos 采样:
从图像质量上来看,和下采样结果一致,邻近采样效果较差,依次往下效果变优,Lanczos 效果最优。
八、总结
上面主要介绍了常见的四种图像重采样算法,在 Android 中,前两种采样方法根据实际情况去选择即可,如果对时间要求不高,倾向于使用双线性采样去缩放图片。如果对图片质量要求很高,双线性采样也已经无法满足要求,则可以考虑引入另外几种算法去处理图片,但是同时需要注意的是后面两种算法使用的都是卷积核去计算生成像素,计算量会相对比较大,Lanczos 的计算量则是最大,在实际开发过程中根据需求进行算法的选择即可。
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。