避免使用不同的画布大小进行位图缩放

时间:2016-04-03 03:23:04

标签: android android-canvas scale android-bitmap

我正在尝试为Picasso库实现叠加转换。 所以,我正在将图像加载到图像视图中,并希望使用bitmpap显示叠加

首先,我用透明色填充画布 然后我试图绘制可绘制的

 @Override
public Bitmap transform(Bitmap source){
    Bitmap workingBitmap=Bitmap.createBitmap(source);
    Bitmap mutableBitmap=workingBitmap.copy(Bitmap.Config.ARGB_8888,true);
    Canvas canvas=new Canvas(mutableBitmap);

    canvas.drawColor(getResources().getColor(R.color.gray_transparent));

    BitmapFactory.Options options=new BitmapFactory.Options();
    options.inScaled=false;
    Bitmap b=BitmapFactory.decodeResource(getResources(),R.drawable.ic_gif_white_24dp,options);

    canvas.drawBitmap(b,source.getWidth()/2,source.getHeight()/2,paint);
    source.recycle();
    return mutableBitmap;
}

问题是当画布大小不同时,我会看到不同的叠加图像大小。我如何能够进行位图缩放取决于画布大小?我希望看到相同的GIF尺寸和不同的画布尺寸。

在第一张图片画布上w = 1280,h = 854,第二张图片w = 480,h = 270

enter image description here

更新

我发现缩放位图的解决方案取决于画布大小,它运行良好,但我希望找到更好的解决方案

BitmapDrawable drawable = (BitmapDrawable) getResources().getDrawable(R.drawable.ic_gif_white_24dp);
Bitmap drawableBitmap = drawable.getBitmap();
double size = source.getWidth() * 0.15;
Bitmap scaled = Bitmap.createScaledBitmap(drawableBitmap, (int) size, (int) size, true);

0 个答案:

没有答案