我尝试使用以下代码旋转图像,但我发现生成的图像越来越大:
Matrix matrix = new Matrix();matrix.setRotate(10);Bitmap newImage = Bitmap.createBitmap(image, 0, 0, image.getWIDth(), image.getHeight(), matrix, true);
你可以看到图片:
原版的
旋转10度
再次旋转10度
再次旋转10度
蓝色矩形是完整图像.
您可以看到图像越来越大(虽然沙发的大小没有改变),原始图像的4个角落后来不在新图像的边界上.
如何更改代码以保持边框上的角落(就像第二张图像一样)?
我忘了说我已经在github上创建了一个演示项目.你可以克隆它,主要的java代码在这里:
https://github.com/freewind/Android-RotateTest/blob/master/src/com/example/MyActivity.java
@H_403_28@解决方法:我尝试了你的代码,经过一些轮换后,它崩溃了OutOfMemory异常导致每次创建一个资源非常密集的新位图.你永远不应该永远!在迭代中使用createBitMap().我对您的图像旋转代码进行了一些修改,现在它正在按预期运行.
这是代码:
private voID addListeners() { this.button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { Matrix matrix = new Matrix(); //copying the image matrix(source) to this matrix matrix.set(imageVIEw.getimageMatrix()); matrix.postRotate(10, imageVIEw.getWIDth()/2, imageVIEw.getHeight()/2); imageVIEw.setimageMatrix(matrix); //checking the size of the image Drawable d = imageVIEw.getDrawable(); Bitmap bmp = ((BitmapDrawable)d).getBitmap(); imageInfo(bmp); } });}
还将imageVIEw的缩放类型设置为矩阵
<ImageVIEw androID:ID="@+ID/Image" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:background="#336699" androID:scaleType="matrix" androID:padding="2px" androID:src="@drawable/m" />
如果我们想从ImageVIEw获取旋转的位图,请执行以下 *** 作:
private Bitmap getBitmapFromVIEw() { // this is the important code :) // Without it the vIEw will have a dimension of 0,0 and the bitmap will be null imageVIEw.setDrawingCacheEnabled(true); imageVIEw.measure(VIEw.MeasureSpec.makeMeasureSpec(0, VIEw.MeasureSpec.UnspecIFIED), VIEw.MeasureSpec.makeMeasureSpec(0, VIEw.MeasureSpec.UnspecIFIED)); imageVIEw.layout(0, 0, imageVIEw.getMeasureDWIDth(), imageVIEw.getMeasuredHeight()); imageVIEw.buildDrawingCache(true); Bitmap b = Bitmap.createBitmap(imageVIEw.getDrawingCache()); imageVIEw.setDrawingCacheEnabled(false); // clear drawing cache return b;}
我希望这有帮助.
总结以上是内存溢出为你收集整理的android – 多次旋转图像但保持角对齐全部内容,希望文章能够帮你解决android – 多次旋转图像但保持角对齐所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)