java - 如何在android中旋转位图?
问题描述
我的位图旋转但与原始图像重叠。
位图来源
public void onImageAvailable(ImageReader reader) {
final Image image = reader.acquireNextImage();
// final Image image = reader.acquireLatestImage();
final ByteBuffer yuvBytes = imageToByteBuffer(image);
// Convert YUV to RGB
final RenderScript rs = RenderScript.create(MainActivity.this);
Bitmap bitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888);
final Allocation allocationRgb = Allocation.createFromBitmap(rs, bitmap);
final Allocation allocationYuv = Allocation.createSized(rs, Element.U8(rs), yuvBytes.array().length);
allocationYuv.copyFrom(yuvBytes.array());
ScriptIntrinsicYuvToRGB scriptYuvToRgb = ScriptIntrinsicYuvToRGB.create(rs, Element.U8_4(rs));
scriptYuvToRgb.setInput(allocationYuv);
scriptYuvToRgb.forEach(allocationRgb);
allocationRgb.copyTo(bitmap);
int rotation = MainActivity.this.getWindowManager().getDefaultDisplay().getRotation();
int x = bitmap.getWidth();
int y = bitmap.getHeight();
Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, y, x, true);
Bitmap rotatedBitmap = rotateBitmap(bitmap1, getOrientation(rotation));
RotatedBitmapFunction
public Bitmap rotateBitmap(Bitmap original, float degrees) {
int width = original.getWidth();
int height = original.getHeight();
Matrix matrix = new Matrix();
matrix.preRotate(degrees);
Bitmap rotatedBitmap = Bitmap.createBitmap(original, 0, 0, width, height, matrix, true);
Canvas canvas = new Canvas(rotatedBitmap);
canvas.drawBitmap(original, 5.0f, 0.0f, null);
return rotatedBitmap;
}
输出
解决方案
检查代码中的这些行
Canvas canvas = new Canvas(rotatedBitmap);
canvas.drawBitmap(original, 5.0f, 0.0f, null);
为什么要在返回旋转位图之前在画布中绘制原始位图。我想这就是问题所在。
推荐阅读
- xml - 使用 ElementTree 将 XML 版本从 1.0 更改为 1.1?
- python - PyYAML ConstructError:无法确定标签的构造函数
- selenium - org.testng.TestNGException:必须声明 org.xml.sax.SAXParseExceptionElement 类型“listners”
- python - AssertionError:未知节点类型:使用 dm.xmlsec.binding 加密 SOAP 正文内容时为 3
- r - 安装旧版Readxl readxl_0.1.1.tar.gz
- xml - 通过 bash 替换 XML 文件中的值
- reactjs - 如何从 contextMenu 调用中访问类成员(不添加到 reactjs 状态)?
- javascript - 未显示 Google 地图标记 - 自动完成
- mapbox - 如何将 Mapbox Mapmatching API 输出与 mapbox-gl-js 一起使用?
- java - 在 Raspberry Pi 上为 Minecraft Nukkitx 服务器设置插件时遇到错误