图像未正确舍入

时间:2014-03-23 10:09:08

标签: java android imageview android-imageview

我想要显示圆形图像。我有一个正方形图像,我使用下面的代码将其围绕。

    public static void roundImageForImageView(ImageView imageView) {

        try {
            Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
            int diameter = Math.min(bitmap.getWidth(), bitmap.getHeight());

            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();
            int rectX = (bitmap.getWidth() - diameter) / 2;
            int rectY = (bitmap.getHeight() - diameter) / 2;

            final Rect rect = new Rect(rectX, rectY, rectX + diameter, rectY
                    + diameter);

            final RectF rectF = new RectF(rect);
            final float roundPx = diameter;

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

            imageView.setImageBitmap(output);

            bitmap = null;
            output = null;
        } catch(OutOfMemoryError e) {
            e.printStackTrace();
        }
    }

ImageView布局:

<ImageView
    android:id="@+id/image_id"
    android:background = "@drawable/placeholder"
    android:scaleType="centerCrop"
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:layout_marginTop="10dp"
    android:contentDescription="@string/profile_picture_description" />

但显示的图像在所有边缘的中间都有小的微小切口。我试过玩图像大小。

enter image description here

知道为什么会有这些削减或如何解决它?

**更新:** android:scaleType="center"使用ImageView会得到以下结果。

enter image description here

2 个答案:

答案 0 :(得分:0)

你正在使用

android:scaleType="centerCrop"

这是裁剪图像并使线条左上角和右上角。

尝试使用

android:scaleType="centerInside"

另外,请查看here at ImageView.ScaleTypes以获取有关不同比例类型的一些好消息:

答案 1 :(得分:0)

布局文件中存在错误。

android:background = "@drawable/placeholder"

以上线条导致出现模糊边缘圆圈。 @drawable/placeholder是一张图片,本身就很模糊。

我将其设为background,而不是src

android:src = "@drawable/placeholder"