0

你好,我想创建一个圆形图像,它有一个小边框,里面加载用户的个人资料图片,就像 google plus android 应用程序一样。问题是我需要将该图像设置为按钮的可绘制顶部,因此我找到了以下代码:

public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
    canvas.drawBitmap(overlay, 0, 0, paint);
    return new BitmapDrawable(bitmap);
} 

女巫应该将一个位图(用户图片)覆盖在另一个位图(椭圆形)上,但认为a)圆形位图在用户的个人资料图片上,b)用户的个人资料图片太大。任何关于如何做到这一点或我是否至少在正确的方式上的建议都非常感谢。

更新

我已经设法使用此代码显示这两个图像:

public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
    int width = overlay.getWidth()-50;
    int height = overlay.getHeight()-50;

    Bitmap b = Bitmap.createScaledBitmap(bitmap, width, height,true);
    Canvas canvas = new Canvas(overlay);
    canvas.save();
    canvas.translate(width,height);
    Matrix matrix = new Matrix();
    canvas.drawBitmap(overlay, matrix, null); 
    canvas.restore();
    canvas.drawBitmap(b,matrix, null);
    BitmapDrawable completeImage = new BitmapDrawable(getResources(),overlay);
    return completeImage;
}  

问题是个人资料图片未与圆形图像对齐。就像个人资料图片是从绘制圆形图像的相同 x、y 位置绘制的一样。另请注意,个人资料图片是使用以下方式加载的:

bitmap = BitmapFactory.decodeStream((InputStream) new URL(imagepath).getContent());
4

1 回答 1

1

使用此代码(首先缩放配置文件图片然后应用覆盖)

public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
    Bitmap b = Bitmap.createScaledBitmap(bitmap, overlay.getWidth(), overlay.getHeight(),true);
    Canvas canvas = new Canvas(b);
    Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
    canvas.drawBitmap(overlay, 0, 0, paint);
    return new BitmapDrawable(b);
} 

我不太明白你在问题中的意思是覆盖在个人资料图片的顶部

于 2012-04-11T21:03:36.570 回答