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

你可能感兴趣的:(Bitmap拉伸后出现锯齿的几种解决办法)