我引用this问题链接到this文章,了解如何在图片上创建圆角。
它适用于我从网上下载的图像,但是当我从Resources / Drawable文件夹中读取图像时,图像没有被舍入。
从网上获取图片时我使用:
Bitmap img = BitmapFactory.decodeStream(inputStream);
从我使用的资源解码时:
Bitmap img = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.profile_photo);
从资源解码时,返回的位图不为空。
关于我在这个问题上出错的任何想法?
答案 0 :(得分: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"/>
&安培;使用这个形状与您的drawable。或使用此代码
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;
}
答案 1 :(得分:0)
我刚刚发现问题是由于输入图像的分辨率不同。
来自资源的图像比网页大得多,因此我需要增加半径以获得舍入效果。