我正在开发一个应用程序,其中我使用以下代码旋转图像。
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
但是图像会从类似于this
的边缘剪切掉我搜索了互联网,但无法解决。我知道我必须增加bmResult的大小。我也尝试过这样做,但仍有一些边被修剪。
如果有任何身体可以给我提供线索或解决问题,那么我的Imageview xml代码
<ImageView
android:id="@+id/img"
android:layout_width="45dp"
android:layout_height="45dp" >
</ImageView>
由于
答案 0 :(得分:1)
对我有用的一个替代方案是将边距设置为负数:
params.setMargins(-350, -350, -350, -350);
final ImageView img1 = new ImageView(this);
img1.setScaleType(ScaleType.FIT_CENTER);
linearLayoutBackground.addView(img1, params);
可能不是最好的做法,但它在紧要关头做了诀窍。
答案 1 :(得分: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);
答案 2 :(得分:0)
感谢@Alan的回答 我有一个解决方案,我只是在画布上旋转(10,10)x,y后绘制图像。
`tempCanvas.drawBitmap(bmpOriginal, 10, 10, null);`