2011-04-07 5 views
2

나는 작은 버전의 사진을 변환하고 저장하는 서블릿을 가지고 있습니다. 이것은, java.awt.image + javax.imageio와 써드 파티 리 샘플 필터를 사용해 구현됩니다. 원본은 모두 sRGB 컬러 프로파일로 업로드됩니다. 다시 샘플링하고 다시 저장하면 sRGB에 저장되지만 저장된 파일에는 저장되지 않습니다.jpeg에서 색 공간 절약하기

이 정보가 파일에 저장되도록하려면 어떻게해야합니까?

차이가 나는 경우, 프로필이없는 이미지는 내 화면 (Safari + OSX + 보정 된 화면)에서 포화 상태가되어 올바른 sRGB 프로필이있을 때 나타납니다. 또한 누락 된 프로필 정보이고 리샘플링 알고리즘이 아닌 것으로 확신합니다.

답변

0

EXIF ​​태그 ColorSpace = 1을 포함하면 sRGB로 처리되어야한다고 알리는 것으로 충분합니다. Apache Commons Sanselan을 사용하여이 작업을 수행했습니다. 이 라이브러리는 불행하게도 완전하지 않으므로 파일을 만든 후에 EXIF를 수정할 때만 사용할 수 있습니다.

public void addExifMetadata(File jpegImageFile, File dst) 
      throws IOException, ImageReadException, ImageWriteException { 
     OutputStream os = null; 
     try { 
      TiffOutputSet outputSet = new TiffOutputSet(); 

      TiffOutputField colorspace = TiffOutputField.create(
         TiffConstants.EXIF_TAG_COLOR_SPACE, outputSet.byteOrder, new Integer(1)); 
      TiffOutputDirectory exifDirectory = outputSet.getOrCreateExifDirectory(); 
      exifDirectory.add(colorspace); 

      os = new FileOutputStream(dst); 
      os = new BufferedOutputStream(os); 
      new ExifRewriter().updateExifMetadataLossless(jpegImageFile, os, outputSet); 

      os.close(); 
      os = null; 
     } finally { 
      if (os != null) 
       try { 
        os.close(); 
       } catch (IOException e) { 

       } 
     } 
    } 
: Sanselan 예에 기초

관련 코드,