jpeg 이미지를 무손실로 저장해야합니다. 저는 스테 가노 프로젝트에 종사하지만 자바는 결과를 압축하고 저장합니다. 모든 포럼을 조사하고 모든 것을 시도하지만 작동하지 않습니다. 내가 PSNR 값이 28.53173과의 크기 "image.jpg를보다 크다"이 example.jpg "입니다 계산자바에서 무손실 jpg를 저장하는 방법?
BufferedImage image = ImageIO.read(new File("sources/image.jpg"));
ImageWriter writer = ImageIO.getImageWritersByFormatName("JPEG").next();
JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(null);
jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpegParams.setCompressionQuality(1f);
writer.setOutput(ImageIO.createImageOutputStream(new File("example.jpg")));
writer.write(null, new IIOImage(image,null,null), jpegParams);
writer.dispose();
이 과정 후 : 여기
무손실 내 예제 코드는 JPEG 이미지를 저장 ".
가져 오기 JAI 라이브러리를 사용해 보지만 Java 8이 JAI를 지원하는지 잘 모르겠습니다.
왜 JPEG가 무손실인지 이해할 수 있도록 알고리즘에 대한 자세한 내용을 공유 할 수 있습니까? jpeg가 알고리즘에 적합한 형식이 아니거나 stego 이미지를 특정 방식으로 인코딩해야 할 수도 있습니다. 예를 들어 [here] (https://stackoverflow.com/questions/29677726/steganography-in-lossy-compression-java/29678676#29678676)를 읽으십시오. – Reti43
먼저 답변 해 주셔서 감사합니다. 내 알고리즘은 매우 간단합니다. 커버리지 이미지, RGB to YCbCr, Y 공간을위한 8x8 블록, 모든 블록을위한 DCT, 중간 주파수의 최대 계수의 LSB를 설정하는 텍스트/이미지 메시지. 모든 IDCT 후, YCbCr을 RGB로 저장하고 저장하십시오. Android 애플리케이션에서이 작업을 수행해야하며 JPEG 쓰기 JPEG를 읽어야합니다. – vakkaya
우리에게 보여줄 수있는 일부 출판물의 알고리즘을 기반으로 했습니까? JPEG를 읽는 경우 파일 데이터에서 픽셀을 재구성 할 필요가 없습니다. DCT 블록을 메모리에로드하고 알고리즘별로 수정 한 다음 출력 파일로 다시 인코딩하면됩니다. 그렇게하면 변환 및 양자화 단계가 포함 된 JPEG 형식의 모든 손실을 피할 수 있습니다. – Reti43