GIF 파일에서 변환 한 JPG 파일이 선명하고 명확하지 않은 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/967567

문제

다음 코드를 사용하여 GIF 파일을 JPG 파일로 변환하지만 작동하지만 결과 JPG 파일은 원래 GIF 파일과 동일한 품질이 아닙니다. 왜? 품질을 향상시키는 방법이 있습니까?

try
{
  ImageIO.write(ImageIO.read(new File("C:/abc.gif")),"jpg",new File("C:/abc.jpg"));
}
catch (Exception e) { e.printStackTrace(); }

따라서 위의 접근 방식 으로이 질문을 다른 각도에서 묻기 위해 출력 품질을 높이는 방법은 무엇입니까?

도움이 되었습니까?

해결책

JPEG a 손실 이미지 압축 인간의 눈이 눈에 띄지 않는 정보를 버리는 형식. 그러나 이미지를 압축 할 때 이미지 품질 설정에 따라 압축 아티팩트, 차단성 및 번짐과 같은 눈에 띄게 나타날 수 있습니다. 이것이 이미지의 배후에 명확하지 않은 이유입니다.

가능할 수 있습니다 ImageIO.write 메소드는 이미지를 충분히 좋아 보이기 위해 필요한 것보다 품질 설정이 낮은 품질 설정으로 JPEG를 저장하고 있습니다.

품질 설정을 높이기 위해서는 ImageWriteParam 이미지 품질 설정을 지정하려면 ImageWriter JPEG를 출력합니다.

예를 들어:

// Get a writer for JPEG.
ImageWriter iw = ImageIO.getImageWritersByFormatName("jpeg").next();
iw.setOutput(new FileImageOutputStream(outputFile));

// Set the compression quality to 0.9f.
ImageWriteParam iwParam = iw.getDefaultWriteParam();
iwParam.setCompressionQuality(0.9f);

// Write image
iw.write(null, new IIOImage(imageToWrite, null, null), iwParam);

관심있는 방법 :

즉, 다른 답변이 언급했듯이 JPEG는 텍스트와 삽화의 압축에 부적합합니다. 목표가 이미지 품질을 보존하는 것이지만 파일 크기는 JPEG를 사용한 압축보다 클 수 있습니다. 무손실 이미지 압축 다음과 같은 형식 PNG 손실없이 이미지 품질을 그대로 유지합니다. 그러나 대부분의 경우 PNG 파일의 파일 크기는 JPEG보다 클 것입니다. (그러나 이것이 항상 그런 것은 아닙니다.)

일반적인 규칙은 사진 및 기타 현실적인 이미지의 경우 JPEG와 같은 손실 압축 형식은 파일 크기 대 품질 트레이드 오프에 적합하며 PNG와 같은 무손실 압축 형식은 삽화 및 라인 아트에 더 잘 작동합니다. 그라디언트 효과가 거의없는 유사한 색상의 넓은 영역이 있습니다.

다른 팁

JPEG는 텍스트가있는 이미지에 특히 나쁘다. 좋은 대안은 .png입니다.

JPEG는 약간의 충실도 손실을 보장합니다. 그것이 압축을 달성하는 방법입니다. 아티팩트를 최소화하는 다른 블록 크기를 선택할 수 있지만 아티팩트가 있습니다.

GIF는 무손실이고 JPEG는 손실입니다. ABC.JPG는 절대로 ABC.gif와 동일하지 않습니다.

대략적으로 말하면, JPEG는 본질적으로 사진 인 이미지에 적합합니다. 이미지가 색상의 큰 변형을 포함하고 자연 주의적 요소를 가지고 있으며 라이브 환경과 비슷한 이미지 인 경우 JPEG는 눈에 보이는 아티팩트가없는 양질의 품질을 제공합니다.

이미지가 그려 지거나 단일 색상의 큰 늪지대가 포함되어 있고 사진이없는 경우 PNG를 사용하여 이미지가 더 잘 압축됩니다. 이것은 32 비트 색상을 수행 할 수있는 무한 형식입니다.

요즘 GIF 형식 이미지를 사용하지 않아야합니다. 형식은 8 비트 색상 만 지원하며 비교적 열악한 압축을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top