TIFF에서 PNG 형식으로 이미지를 변환 할 때 실제로 최종 이미지가 가능한 가장 작게되도록 비트 심도를 1 (검정색 & 흰색)로 설정하고 서명 이미지를 사용하고 있습니다. 내 문제는 원본 이미지가 "너무 희색"이며 전환 과정에서 이미지가 무시되므로 일부 픽셀이 "손실"된다는 것입니다.비트 심도 = 1 (흑백)으로 TIFF-PNG 변환에서 어느 픽셀이 검정색 (임계 값)이되는지 제어하는 방법이 있습니까?
내가 원하는 것은 이미지에 threshold을 적용하도록 PNG 인코더에 지시하는 방법입니다. 예를 들어, 회색 레벨이 240보다 크고 검정색이 아닌 경우 흰색입니다. 이미지가 서명이기 때문에 이미지를 픽셀의 많은 부분을 잃지 않는 다른 방법으로 브라우저에 표시해야합니다.
이 내가 PNG 형식으로 TIFF에서 이미지를 변환하는 데 사용하는 코드는 다음과 같습니다 : 다음은 샘플입니다
public byte[]tiffToPng(byte[]tiffBytes) throws IOException {
SeekableStream stream = new ByteArraySeekableStream(tiffBytes);
ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", stream, null);
RenderedImage renderedImage = decoder.decodeAsRenderedImage(0);
PNGEncodeParam pngEncodeParam = PNGEncodeParam.getDefaultEncodeParam(renderedImage);
pngEncodeParam.setBitDepth(1);
ByteArrayOutputStream pngBytesStream = new ByteArrayOutputStream();
ImageEncoder encoder = ImageCodec.createImageEncoder("png", pngBytesStream, pngEncodeParam);
encoder.encode(renderedImage);
pngBytesStream.flush();
return pngBytesStream.toByteArray();
}
감사합니다! 내가 어떻게 할 수 있니? 그냥 어떤 방향으로 나를 가리켜 ... – lmiguelmh