Есть bytearray, в котором хранятся байты картинки. Читал их с помощью OpenCV Imgcodecs.imread(). После этого сразу же записал их двумя способами в файл:
byte[] imageInByte = null;
Image image = new Image("./1.jpg");
BufferedImage im = ImageTransform.toBitmap(image);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ImageIO.write(im, "jpg", baos);
imageInByte = baos.toByteArray();
baos.close();
// convert byte array back to BufferedImage
InputStream in = new ByteArrayInputStream(imageInByte);
BufferedImage bImageFromConvert = ImageIO.read(in);
// 1 способ
ImageIO.write(bImageFromConvert, "jpg", new File("./2.jpg"));
// 2 способ
FileOutputStream fos = new FileOutputStream("./2_fos.jpg");
fos.write(imageInByte);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
Исходный файл весит 104Kb. После сохранения фотографий двумя способами, они стали весить 49Kb. Вопрос: почему так, если никаких изменений в байты я не вносил? Можно было бы сослаться на OpenCV, мол, сжимает и т.д., но тогда почему и с помощью FileOutputStream сохраняется картинка с таким же размеров в Kb. Предполагаю, что при чтении картинки с помощью OpenCV Imgcodecs.imread(), оно заранее ужимает.
Кодек, который сохраняет jpg в OpenCV использует шкалу сжатия, от 0 до 100, где 100 - отсутствие сжатия.
Сохранение jpg без сжатия из Mat mat:
MatOfInt param = new MatOfInt(Imgcodecs.CV_IMWRITE_JPEG_QUALITY, 200);
Imgcodecs.imwrite("jpgWithnoutCompress.jpg", mat, param);
Стандартно значение сжатия 95 (вроде бы, специально не проверял)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть сервер, к которому мое приложение подключается посредством SocketНужно держать постоянный коннект, чтобы обходить ситуации, когда пропадает...
Не судите строго учу JAVA третий день, решил создать программку для фана, после завершения игры, хочу что бы выводился вопрос: хотите продолжить...
У меня есть диалоговое окно,в котором содержится RecyclerViewПри добавлении элементов окно становится выше
Скажите пожалуйста, возможно ли с помощью Java написать программу под Windows для работы с BluetoothЕсли да, то хотелось бы примеры программ, ссылки,...