如何将图像裁剪为一定数量的字节?

时间:2018-07-29 01:34:01

标签: java android image-processing

我正在编写一个应用程序,在其中我拍照,然后将图片传递给图像识别模型。问题是,识别仅占用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()));

如您所见,我限制了所捕获图像的大小,但是字节数取决于质量,因此我实际上只需要裁剪图像。我怎样才能做到这一点?

1 个答案:

答案 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();
}