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

图片拉伸后出现严重锯齿的情况,总结了下,有如下几种方案

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);

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>