我正在编写一个应用程序,在其中我拍照,然后将图片传递给图像识别模型。问题是,识别仅占用150528字节,并且图像中的字节数取决于图像质量。在Java中,是否有一种方法可以根据质量尽可能均匀地裁剪图像的顶部和底部,使其每次设置为固定的字节数?
到目前为止,这是我这部分的代码。
int width = 100;
int height = 200;
final ImageReader reader = ImageReader.newInstance(width,height,ImageFormat.JPEG,1);
List<Surface> outputSurface = new ArrayList<>(2);
outputSurface.add(reader.getSurface());
outputSurface.add(new Surface(textureView.getSurfaceTexture()));
如您所见,我限制了所捕获图像的大小,但是字节数取决于质量,因此我实际上只需要裁剪图像。我怎样才能做到这一点?
答案 0 :(得分:0)
您可以使用以下内容裁剪/调整图像大小
byte[] thumb_byte_data;
Uri resultUri = ImageUri;
//getting imageUri and store in file. and compress to bitmap
File file_path = new File(resultUri.getPath());
try {
Bitmap thumb_bitmap = new Compressor(this)
.setMaxHeight(200)
.setMaxWidth(200)
.setQuality(75)
.compressToBitmap(file_path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
thumb_bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
thumb_byte_data = baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}