Как использовать класс JPEGImageWriteParam при написании изображения JPEG - PullRequest
0 голосов
/ 26 ноября 2011

Я хочу написать изображение в формате JPEG на Java. Я использую класс JPEGImageWriteParam для установки JPEGQTable и JPEGHuffmanTable. Вот код:

    JPEGQTable[] qTables = {luminanceQTable,chromianceQTable};
    JPEGHuffmanTable[] dcTables = {JPEGHuffmanTable.StdDCLuminance,JPEGHuffmanTable.StdDCChrominance};
    JPEGHuffmanTable[] acTables = {JPEGHuffmanTable.StdACLuminance,JPEGHuffmanTable.StdACChrominance};

    JPEGImageWriteParam param = new JPEGImageWriteParam(Locale.US);
    param.setEncodeTables(qTables,dcTables,acTables);  

А затем используйте ImageWriter, чтобы написать изображение. Вот код:

    ImageOutputStream ios = ImageIO.createImageOutputStream(image);
    writer.setOutput(ios);
    IIOImage ioImage = new IIOImage(raster, null, metadata);
    writer.write(metadata, ioImage, param);

Метаданные и растр из исходного изображения без изменений. Но выходное изображение JPEG странное. Я хочу знать, хочу сделать с проблемой. Должен ли я изменить значение для каждого пикселя растра?

...