1

我指的是这个问题,它链接到这篇关于如何在图像上创建圆角的文章。

它适用于我从 Web 下载的图像,但是当我从 Resources/Drawable 文件夹中读取图像时,图像没有得到四舍五入。

从网络获取图像时,我使用:

Bitmap img = BitmapFactory.decodeStream(inputStream);

从我使用的资源中解码时:

Bitmap img = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.profile_photo);

从资源中解码时,返回的位图不为空。

关于我在哪里出错的任何想法?

4

2 回答 2

0

添加“形状”(可绘制的 XML)。

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#ffffffff"/>    

<stroke android:width="3dp"
        android:color="#ff000000"
        />

<padding android:left="1dp"
         android:top="1dp"
         android:right="1dp"
         android:bottom="1dp"
         /> 

<corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
 android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 

& 将此形状与您的可绘制对象一起使用。或使用此代码

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
     bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);

final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = 12;

paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);

canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);

return output;
}
于 2012-11-08T11:32:05.220 回答
0

我刚刚发现问题是由于输入图像的分辨率不同。

来自资源的图像比网络大得多,因此我需要增加半径大小以获得舍入效果。

于 2012-11-08T12:26:13.257 回答