2013-03-25 3 views
0

이미지를 암호화하는 프로젝트를 개발했습니다. 이 프로그램은 잘 작동하지만 148 KB png 이미지를 암호화 한 후에는 257 KB가됩니다. 동일한 파일을 다시 해독하면 이전 이미지가 다시 표시되지만 이미지는 219KB가됩니다. 크기가 거의 두 배가되는 이유는 무엇입니까?암호화 후 이미지 크기가 증가합니다.

내 코드 : Cannot read image in jar

+3

암호화하려면 imaage 순수한 이진 데이터 (바이트) 등. 이미지를 읽고 java로 이미지를 쓰면 가장 높은 압축률을 얻지 못할 수 있으며 손실 압축은 품질이 저하 될 수 있습니다. –

답변

0

그것의 제대로하지 암호화/암호 해독 문제입니다 단계가 아니라 당신이 읽고 PNG를 작성하는 방법.

FileInputStreamFileOutputStream과 같은 이진 스트림을 사용하여 PNG를 읽고 써야합니다. 바이너리로 유지함으로써 데이터를 변경하지 않도록합니다.

이미지 크기가 변경되는 이유는 (148KB -> 219KB) 원본 파일의 모든 속성을 보존하지 않기 때문입니다. 일례 출력 폭, 높이 및 형태로

은 (아닌 원본 이미지를 채우는) 다음 문장에 하드 코딩되어

BufferedImage writeImage = new BufferedImage(512, 512, BufferedImage.TYPE_BYTE_GRAY); 
+0

그러나 원본 너비와 높이가 동일합니다. 여전히 크기가 커집니다. 왜? – Prasad

+0

더 많은 데이터 또는 알파 레이어 추가를 제공하는 다른 색상 심도 일 수 있습니다. 요점은 png가 불필요하게 압축 해제되고 재 포장된다는 것입니다. 그리고 분명히 몇 가지 속성이 보존되지 않았습니다. 즉, 암호화 할 입력은 바이너리 스트림이어야합니다. 암호화되는 파일이 그림, 텍스트 파일 또는 다른 것인지 여부는 암호화가 신경 쓰지 않아야합니다. –

+0

사실 저는 알고리즘과 같이 이미지를 RC4로 암호화합니다. 즉 키를 사용하여 이미지의 'XOR'을 수행합니다. 나는 암호화 된 이미지의 크기가 증가하게 될 (명시 적으로) 아무 것도하지 않는다. 나는 이것을 추적하고 싶다. 도와주세요. – Prasad

관련 문제