이미지 변환

이미지를 흑백 및 그레이 스케일로 변환

가끔은 인쇄 또는 아카이빙 목적으로 컬러 이미지를 흑백 또는 그레이 스케일로 변환해야 할 수도 있습니다. 이 기사에서는 이를 위해 Aspose.PSD for Java API를 사용하여 아래에 설명된 두 가지 방법으로 이를 달성하는 방법을 보여줍니다.

  • 이진화 (Binarization)
  • 그레이 스케일링 (Grayscaling)

이진화 (Binarization)

이진화의 개념을 이해하기 위해서는 이진 이미지를 정의하는 것이 중요합니다. 이진 이미지란 각 픽셀에 대해 두 가지만 가능한 값이 있는 디지털 이미지를 말합니다. 일반적으로 이진 이미지에 사용되는 두 색은 흑색과 흰색이지만 어떤 두 색상이든 사용할 수 있습니다. 이진화는 이미지를 이진 수준으로 변환하는 과정으로, 각 픽셀이 단일 비트(0 또는 1)로 저장되어 0은 색상이 없음을 나타내고 1은 색상이 존재함을 의미합니다. Aspose.PSD for Java API는 현재 두 가지 이진화 방법을 지원합니다.

고정 임계값을 사용한 이진화

다음 코드 조각은 고정 임계값 이진화를 이미지에 적용하는 방법을 보여줍니다.

String dataDir = Utils.getDataDir(BinarizationWithFixedThreshold.class) + "Conversion/";
String sourceFile = dataDir + "sample.psd";
String destName = dataDir + "BinarizationWithFixedThreshold_out.jpg";
try (Image image = Image.load(sourceFile);
RasterCachedImage rasterCachedImage = (RasterCachedImage) image) {
if (!rasterCachedImage.isCached()) {
// Cache image if not already cached
rasterCachedImage.cacheData();
}
// Binarize image with predefined fixed threshold and Save the resultant image
rasterCachedImage.binarizeFixed((byte) 100);
rasterCachedImage.save(destName, new JpegOptions());
}

Otsu 임계값을 사용한 이진화

다음 코드 조각은 Otsu 임계값 이진화를 이미지에 적용하는 방법을 보여줍니다.

String dataDir = Utils.getDataDir(BinarizationWithOtsuThreshold.class) + "Conversion/";
String sourceFile = dataDir + "sample.psd";
String destName = dataDir + "BinarizationWithOtsuThreshold_out.jpg";
try (Image image = Image.load(sourceFile);
// Cast the image to RasterCachedImage and Check if image is cached
RasterCachedImage rasterCachedImage = (RasterCachedImage) image) {
if (!rasterCachedImage.isCached()) {
// Cache image if not already cached
rasterCachedImage.cacheData();
}
// Binarize image with Otsu Thresholding and Save the resultant image
rasterCachedImage.binarizeOtsu();
rasterCachedImage.save(destName, new JpegOptions());
}

그레이 스케일링 (Grayscaling)

그레이 스케일링은 연속된 톤 이미지를 불연속한 회색 음영 이미지로 변환하는 과정입니다. 다음 코드 조각은 그레이 스케일링을 사용하는 방법을 보여줍니다.

String dataDir = Utils.getDataDir(GrayScaling.class) + "Conversion/";
String sourceFile = dataDir + "sample.psd";
String destName = dataDir + "Grayscaling_out.jpg";
try (Image image = Image.load(sourceFile)) {
// Cast the image to RasterCachedImage and Check if image is cached
RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
if (!rasterCachedImage.isCached()) {
// Cache image if not already cached
rasterCachedImage.cacheData();
}
// Transform image to its grayscale representation and Save the resultant image
rasterCachedImage.grayscale();
rasterCachedImage.save(destName, new JpegOptions());
}

GIF 이미지 레이어를 TIFF 이미지로 변환

PSD 이미지의 레이어를 다른 래스터 이미지 형식으로 추출하고 변환해야 하는 경우가 있습니다. Aspose.PSD API는 PSD 이미지의 레이어를 다른 래스터 이미지 형식으로 추출 및 변환하는 기능을 지원합니다. 우선 이미지의 인스턴스를 생성하고 로컬 디스크에서 PSD 이미지를 로드한 다음, Layer 속성에서 각 레이어를 반복하게 됩니다. 이후 블록을 TIFF 이미지로 변환합니다. 다음 코드 조각은 PSD 이미지의 레이어를 TIFF 이미지로 변환하는 방법을 보여줍니다.

String dataDir = Utils.getDataDir(GIFImageLayersToTIFF.class) + "Conversion/";
String sourceFile = dataDir + "sample.psd";
// Load a PSD image and Convert the image's layers to Tiff images.
try (PsdImage image = (PsdImage) Image.load(sourceFile)) {
// Iterate through array of PSD layers
for (int i = 0; i < image.getLayers().length; i++) {
// Get PSD layer.
Layer layer = image.getLayers()[i];
// Create an instance of TIFF Option class and Save the PSD layer as TIFF image
TiffOptions objTiff = new TiffOptions(TiffExpectedFormat.TiffDeflateRgb);
layer.save("output" + i + "_out.tiff", objTiff);
}
}

… (이어지는 부분은 생략)