Я пытался объединить изображение с камеры2 и растровое изображение, когда требуется программа Imagesaver. Поэтому я попробовал пример в Интернете, но он не работает, и приложение не работает. В чем проблема этого кода?
Я думаю, что холст не работает должным образом. Но я не знаю точно, что это такое.
private byte[] byteArray;
private static Bitmap bitmap;
byteArray = getArguments().getByteArray("board");
bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
private static class ImageSaver implements Runnable {
private final Image mImage;
private final File mFile;
ImageSaver(Image image, File file) {
mImage = image;
mFile = file;
}
@Override
public void run() {
ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
Bitmap capBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
Bitmap combined = Bitmap.createBitmap(capBitmap, 0, 0, capBitmap.getWidth(), capBitmap.getHeight());
capBitmap.recycle();
Bitmap resize = Bitmap.createScaledBitmap(bitmap, capBitmap.getWidth(), capBitmap.getHeight(), true);
resize.recycle();
Canvas canvas = new Canvas(combined);
canvas.drawBitmap(resize, 0, 0, new Paint());
FileOutputStream output = null;
try {
output = new FileOutputStream(mFile);
combined.compress(Bitmap.CompressFormat.JPEG, 100, output);
} catch (IOException e) {
e.printStackTrace();
} finally {
mImage.close();
if (null != output) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}