JPEG в кодировке TIFF - PullRequest
       42

JPEG в кодировке TIFF

2 голосов
/ 20 июля 2011

Я делаю следующие шаги:

TIFFEncodeParam tep = new TIFFEncodeParam();

tep.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);

BufferedImage buff = new BufferedImage(newimage.getWidth(null),
                                                   newimage.getHeight(null),
                                                   BufferedImage.TYPE_BYTE_BINARY);
//newimage is an awt image

buff.createGraphics().drawImage(newimage, 0,0,null);

ParameterBlock outPB = new ParameterBlock();

outPB.addSource(buff);
outPB.add("myjpegfile.jpg");
outPB.add("tiff");
outPB.add(tep);

PlanarImage outPI = JAI.create("filestore",outPB);

Здесь я получаю: java.lang.Error: кодировка JPEG-in-TIFF поддерживается только для 8-битной выборки es и 1 (оттенки серого) или 3 (RGB или YCbCr) выборки на пиксель.

Это потому, что мне нужно иметь максимальное сжатие в JPEG-файл для монохромного изображения. Я могу написать TIFF (24 КБ) и JPEG (212 КБ) (размер страницы А4 200 т / д BW), но JPEG слишком велик.

Что означает эта ошибка? Что такое 8-битные сэмплы?

Thx.

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Это означает, что JPEG - in-TIFF поддерживает только 8-битные оттенки серого (= 1 сэмпл с 8 битами на пиксель) или 24-битные цветные изображения (= 3 сэмпла с 8 битами на пиксель).

TYPE_BYTE_BINARY представляет черно-белое изображение (= 1 выборка с 1 битом на пиксель). Вместо этого вы хотели бы использовать TYPE_BYTE_GRAY.

0 голосов
/ 08 апреля 2013

Не существует такого понятия, как черно-белый jpg, предполагая, что под черно-белым изображением вы подразумеваете изображение с 1 битом на пиксель, причем каждый пиксель является либо черным, либо белым.И, как правило, когда вы преобразуете черно-белое сканирование в оттенки серого, а затем сохраняете его со сжатием JPEG, это намного больше, чем сохранение исходного черно-белого изображения в сжатом формате, таком как TIFF или PNG.Маленькие острые монохромные края при черно-белом сканировании - это наихудшая возможная вещь для сжатия JPEG.

Вам следует пересмотреть файл, который вы пытаетесь продублировать, и лучше понять, каков его настоящий формат.Может быть, это файл JBIG2?Это формат сжатия B & W, который работает очень хорошо.

Другая возможность, которую я видел, состоит в том, что у вас есть файл с расширением 'jpg', который фактически находится в формате TIFF или PNG.Посмотрите на первые несколько байтов файла и используйте эту подпись , чтобы определить формат файла, например, здесь .Если это JPEG, получите более подробную информацию с помощью программы, подобной JPEGsnoop от Calvin Hass.(Никаких личных отношений, я просто счастливый пользователь.) Если это действительно TIFF, вы можете получить более подробную информацию с AsTiffTagViewer от Aware Systems.

...