Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Android中干净地缩小图像:可以这样做吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Android上干净地缩小图像时遇到了麻烦.我希望在任意大小的原始大小的10-100%之间缩放小PNG图像.

我已经创建了一个示例图像来演示问题,并加剧了我在Android图像缩放器中看到的异常行为:

上图是来自Android设备的屏幕截图,其中添加了一些注释.我还在左侧的第二列中添加了相同的图像,显​​示了如何使用“GIMP”(GNU图像处理程序)进行线性缩放.

基本图像由红色和蓝色像素的棋盘图案背景组成.在那个背景上,我画了一些1px宽的黄色线条和相当薄的绿色文字.图像为288×288像素.

当将图像缩放到原始尺寸的1/3时,Android似乎只抓住九个像素中的一个,抛弃所有其他数据.因此,一些黄线完全消失.值得注意的是,棋盘图案保持完整(这仅仅是使用每个第3个像素的结果).

当将图像缩放到其原始尺寸的接近但不精确的50%的尺寸时,例如,142×142或143×143,缩放器在图像上产生一些相当大的异常/伪像.

尺寸为50%(144×144)时,图像看起来正确.

测试图像确实带来了最差的图像缩放器,但“正常”的PNG图标图像也受到严重影响.从10-33%左右,图像没有被正确地重新采样,因此看起来非常“位图”.并且某些较大尺寸的图像在某些尺寸下具有非常奇怪的异常.

如果有人知道一种方法来禁用这种奇怪的缩放行为,即使是在性能成本上,我也非常感谢你知道它.它当然可以通过编写一个直接作用于位图像素的算法来解决,但我希望这不是唯一的选择.

另外值得注意的是,所有图像工作都是使用ARGB_8888 Bitmap.Configs完成的.我尝试通过在ImageViews上设置maxwidth / maxheight来操作图像大小,使用Bitmap.createScaledBitmap(),并使用Bitmap.createBitmap和Matrix.所有尝试都有同样的结果.启用位图过滤.

再次感谢您的任何建议!

解决方法

使用Bitmap.createScaledBitmap()和Bitmap.createBitmap与Matrix是一样的; see the source for Bitmap.createScaledBitmap(自Android 2以来没有变化).

在Android 4.0上,使用矩阵(如在Bitmap.createScaledBitmap中)允许硬件加速操作(如果启用了4.1 IIRC),因此我们无法直接控制正在执行的操作以及如何完成.

这意味着您必须使用所需的(此处为线性)过滤来实现您自己的缩放方法;通过像素处理;或者使用带有良好过滤器的OpenGL ES,但它可能并非在所有设备上都可用.

@H_403_41@

大佬总结

以上是大佬教程为你收集整理的在Android中干净地缩小图像:可以这样做吗?全部内容,希望文章能够帮你解决在Android中干净地缩小图像:可以这样做吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。