3

我正在开发一个应用程序,我在其中使用以下代码旋转图像。

Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.image2); 
Bitmap bmResult = Bitmap.createBitmap(bmpOriginal.getWidth(), bmpOriginal.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas tempCanvas = new Canvas(bmResult); 
    tempCanvas.rotate(-10, bmpOriginal.getWidth()/2, bmpOriginal.getHeight()/2); 
tempCanvas.drawBitmap(bmpOriginal, 0, 0, null);

mImageView.setImageBitmap(bmResult);

取自Rotating a drawable in Android

但是图像从边缘被剪裁,类似于

我已经搜索了互联网,但我无法解决它。我知道我必须增加 bmResult 的大小。我也尝试过这样做,但仍然有一些边缘被剪掉了。

如果任何机构可以给我线索或解决以下问题是我的 Imageview xml 代码

<ImageView
            android:id="@+id/img"
            android:layout_width="45dp"
            android:layout_height="45dp" >

</ImageView>

谢谢

4

3 回答 3

1

对我有用的一种选择是将边距设置为负数:

    params.setMargins(-350, -350, -350, -350);
    final ImageView img1 = new ImageView(this);
    img1.setScaleType(ScaleType.FIT_CENTER);
    linearLayoutBackground.addView(img1, params);

可能不是最佳实践,但它在紧要关头起到了作用。

于 2015-03-20T03:16:08.500 回答
0

我遇到了同样的问题,这段代码对我有用。尝试一下。

Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.image2); 
        Matrix mat = new Matrix();
        mat.postRotate(-10);
        Bitmap bMapRotate = Bitmap.createBitmap(bmpOriginal, 0, 0, bmpOriginal.getWidth(), bmpOriginal.getHeight(), mat, true);
        mImageView.setImageBitmap(bMapRotate);
于 2013-04-12T18:05:47.213 回答
0

感谢@Alan 的回答我得到了解决方案,我只是在画布上的 (10,10) x,y 上旋转后绘制图像。

`tempCanvas.drawBitmap(bmpOriginal, 10, 10, null);`
于 2013-04-16T06:19:21.453 回答