`
zcwfeng
  • 浏览: 106547 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Bitmap拉伸后出现锯齿的几种解决办法

 
阅读更多

最近在做Flow Em时 遇到图片拉伸后出现严重锯齿的情况,后来网上查了下,经过几次尝试算是解决了问题,现在就来总结下:

网上搜到的两种解决方法:

1.给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。

paint.setAntiAlias(true);

canvas.drawBitmap(bmp ,fX,fY,paint);

2.直接给canvas加抗锯齿。

canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));

这两种方法 大多数情况下都能解决问题,但是部分情况下效果不太理想。除此之外还可以尝试下面两种方法:

3. 创建bitmap时就做拉伸处理:

Bitmap bmp = Bitmap.createScaledBitmap(bmpSrc, (int) (bmpSrc.getWidth() * scale), (int) (bmpSrc.getHeight() * scale), true);

注意这个 方法的最后一个参数一定要设为true,否则无法去锯齿

4 .在绘制图像时利用matrix对图像进行拉伸。

Matrix matrix = new Matrix();

matrix.setTranslate(fX,fY);

matrix.postScale(scale,scale,fX,fY);

canvas.drawBitmap(bmp,matrix,null);

分享到:
评论

相关推荐

    Android-使用clippath实现的CircleImageView没有Bitmap没有锯齿

    5. **注意事项**:为了防止Bitmap拉伸导致的锯齿现象,最好使用高分辨率的图片,并且在设置Bitmap时使用`_antialiasing`属性来开启抗锯齿,以提高显示质量。 6. **使用CircleImageView**:在布局文件中,将普通的`...

    android bitmap outOfMemory解决方法

    在Android开发中,Bitmap对象是用于处理图像的主要类,但如果不正确管理,它可能导致应用程序运行时出现`OutOfMemoryError`。这是因为Bitmap占用大量的内存,尤其是当加载大尺寸或高分辨率图片时。这个问题在低内存...

    Android 将view 转换为Bitmap出现空指针问题解决办法

    Android 将view 转换为Bitmap出现空指针问题解决办法 Android 将view 转换为Bitmap是一种常见的操作,但是在这个过程中可能会出现空指针异常的问题。本文主要介绍了Android 将view 转换为Bitmap出现空指针问题解决...

    处理bitmap内存溢出问题

    在Android开发中,处理`Bitmap`内存溢出问题是一个常见的挑战,尤其是在处理高分辨率或大尺寸图片时。当应用程序尝试加载或操作一张超出虚拟机内存预算的`Bitmap`时,系统会抛出`java.lang.OutOfMemoryError: bitmap...

    Bitmap画圆形图片

    通过设置BitmapShader的TileMode为Clamp,并结合Matrix的setScale()方法,可以将Bitmap拉伸填充到圆形区域内。这种方法同样可以达到预期效果。 在项目中,你可能还会遇到性能问题,特别是当处理大量图片时。为提高...

    Bitmap位图旋转范例

    在Android开发中,我们经常会遇到需要对Bitmap进行各种操作的情况,其中旋转Bitmap就是一种常见的需求,比如用户拍摄照片后需要调整角度,或者在设计UI时需要动态调整图片的方向。这个“Bitmap位图旋转范例”是一个...

    bitmap上传图片demo

    裁剪完成后,通常会将裁剪后的Bitmap转换成二进制流,以便通过网络API上传到服务器。可以使用`Bitmap.compress(Bitmap.CompressFormat, quality, stream)`方法将Bitmap压缩为JPEG或PNG格式的流。 总结,"bitmap...

    游戏开发BITMAP图片

    但这也意味着位图在放大时容易失真,因为像素会被拉伸,形成明显的锯齿边缘。在游戏开发中,为了确保图像质量,通常会预先创建不同分辨率的位图资源,以适应不同的设备屏幕。 在游戏开发中使用BITMAP,我们需要了解...

    Android-使用Matrix对Bitmap进行处理

    Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), originalBitmap.getHeight(), matrix, true); ``` 除了旋转,我们还可以使用Matrix进行缩放操作。例如,将Bitmap按...

    canvas 转换成bitmap

    Android 中 Canvas 转换为 Bitmap 是一种常见的需求,especially 在需要将 Canvas 绘制的图形显示在 ImageView 中的情况下。在这篇文章中,我们将详细介绍如何将 Canvas 转换为 Bitmap,并将其显示在 ImageView 中。...

    Android编程画图之抗锯齿解决方法

    在Android编程中,进行图形绘制时,经常遇到的一个问题是图像边缘出现锯齿现象,尤其是在进行旋转、缩放等操作后,这种现象更为明显。锯齿是由于像素渲染不完全导致的,影响了图像的视觉效果。为了解决这个问题,...

    bitmap OOM的解决方案

    但要注意,回收后的Bitmap不能再次使用。 8. **使用 Glide, Picasso, Fresco 等库**:这些第三方库已经优化了Bitmap的加载和管理,能有效防止OOM,并提供了丰富的功能,如自动缩放、内存缓存和网络加载。 9. **...

    bitmap理解学习例子

    - **创建复杂效果**:BitmapShader允许将Bitmap作为Shader,创建如平铺、拉伸、旋转等效果。 8. **硬件加速**: - **开启硬件加速**:在Android 3.0及以上版本,可以开启硬件加速,提升Bitmap在Canvas上的绘制...

    Activity跳转时传递Bitmap对象

    在Activity间传递Bitmap,有两种主要方式:Intent extras和使用Parcelable接口。由于Bitmap对象较大,直接通过Intent的extras传递可能会导致内存溢出,因为Intent的大小有限制。因此,更推荐使用Parcelable接口。 1...

    Android下利用Bitmap切割图片

    例如,可以创建一个新的Bitmap作为画布,然后在上面绘制裁剪后的Bitmap和其他元素: ```java // 创建一个新的Bitmap作为画布 Bitmap canvasBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);...

    Bitmap格式说明文档

    Bitmap格式说明文档 Bitmap格式说明文档是Windows操作系统中使用的图形文件格式的说明文档,涵盖了Bitmap和ICON格式的详细说明,并且讲述了WIN API中对格式的封装。 一、图形文件格式 在Windows操作系统中,图形...

    Android Bitmap 处理示例

    - 使用工具如MAT (Memory Analyzer Tool) 或 Android Studio 的内存分析器检查内存泄漏,确保Bitmap在不再使用后被正确回收。 通过上述策略,开发者可以在保证用户体验的同时,有效避免因Bitmap处理不当导致的性能...

    用MFC绘制Bitmap

    绘制完成后,记得恢复原始的DC和Bitmap,释放资源: ```cpp memDC.SelectObject(pOldBitmap); ``` 6. **位图操作** MFC还提供了其他位图操作,如旋转、缩放、裁剪等,这些通常涉及更复杂的GDI函数。例如,`...

    c#Bitmap类和Graphics类

    C#中的Bitmap类和Graphics类是两种常用的图形处理类,它们之间存在一定的差异和联系。在本节中,我们将详细介绍Bitmap类和Graphics类的概念、方法和应用场景。 一、Bitmap类 Bitmap类是C#中用于图像处理的基本类,...

Global site tag (gtag.js) - Google Analytics