Я делаю пользовательскую камеру, которая фотографирует документы и отправляет их по сети. Затем изображения будут распознаны. Для их отправки по сети они должны быть небольшого размера (менее 100 Кб). Сначала я уменьшаю изображение, а затем преобразую его в шкалу серого и сжимаю JPG со 100%. Тем не менее размер изображения больше 100Kb. Если я уменьшу процент сжатия JPG, качество действительно плохое. Как решить эту проблему. Вот код:Сжатие изображения при сохранении качества
// Image Scaling
public static Bitmap decodeSampledBitmapFromResource(byte[] data,
int reqWidth, int reqHeight) {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeByteArray(data, 0, data.length, options);
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
options.inJustDecodeBounds = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
return BitmapFactory.decodeByteArray(data, 0, data.length, options);
}
// полутоновое изображение. Использование Renderscript сжатия
uchar grayscale = pixelIn.r * 0.299 + pixelIn.g * 0.587 + pixelIn.b * 0.114;
uchar4 pixelOut;
pixelOut.a = pixelIn.a;
pixelOut.r = grayscale;
pixelOut.g = grayscale;
pixelOut.b = grayscale;
return pixelOut;
// JPG
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);