티스토리 뷰
Java 이미지 파일 출력 방법
- 메모리상의 BufferedImage 인스턴스를 외부로 이미지 파일 형태로 출력하는 방법에 대해서 공유하고자 한다.
구현방법
TIFF 출력방법
public void saveToImage(File toSave, String format, BufferedImage imageBuffer) throws IOException {
Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("tiff");
TIFFImageWriter tiffImageWriter = (TIFFImageWriter) writers.next();
TIFFImageWriteParam writeParam = (TIFFImageWriteParam) tiffImageWriter.getDefaultWriteParam();
TIFFT6Compressor compressor = new TIFFT6Compressor();
writeParam.setCompressionMode(TIFFImageWriteParam.MODE_EXPLICIT);
writeParam.setTIFFCompressor(compressor);
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(new FileOutputStream(toSave));
tiffImageWriter.setOutput(imageOutputStream);
tiffImageWriter.write(null, new IIOImage(imageBuffer, null, null), writeParam);
tiffImageWriter.dispose();
imageOutputStream.close();
}
JPEG 출력방법
public void saveToImage(File toSave, String format, BufferedImage imageBuffer) throws IOException {
Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("jpg");
JPEGImageWriter jpegImageWriter = (JPEGImageWriter) writers.next();
JPEGImageWriteParam writeParam = (JPEGImageWriteParam) jpegImageWriter.getDefaultWriteParam();
writeParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(new FileOutputStream(toSave));
jpegImageWriter.setOutput(imageOutputStream);
jpegImageWriter.write(null, new IIOImage(imageBuffer, null, null), writeParam);
jpegImageWriter.dispose();
imageOutputStream.close();
}
PNG 출력방법
public void saveToImage(File toSave, String format, BufferedImage imageBuffer) throws IOException {
imageInfo = new ImageInfo(imageBuffer.getWidth(), imageBuffer.getHeight(), 16, false);
pngWriter = new PngWriter(outputFile, imageInfo, true);
pngWriter.getPixelsWriter().setDeflaterCompLevel(compressLevel);
pngWriter.getPixelsWriter().setDeflaterStrategy(compressStrategy);
PngMetadata pngMetadata = pngWriter.getMetadata();
pngMetadata.setTimeNow();
DataBuffer imageDataBuffer = imageBuffer.getRaster().getDataBuffer();
ImageLineByte imageLineByte = new ImageLineByte(imageInfo);
int[] data = ((DataBufferInt) imageDataBuffer).getData();
byte[] line = imageLineByte.getScanline();
for (int i = 0; i < lines; i++) {
for (int d = 0; d < img.getWidth(); d++) {
int val = data[i * img.getWidth() + d];
line[3 * d + 0] = (byte) (val >> 16); //R
line[3 * d + 1] = (byte) (val >> 8); //G
line[3 * d + 2] = (byte) val; //B
}
pngWriter.writeRow(imageLineByte);
}
pngWriter.end();
pngWriter.close();
}
관련글
끝으로
이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
(Java) 파일 FTP 프로토콜 전송 기능 구현방법 (FTP Client 구현) (0) | 2020.05.05 |
---|---|
(Java) 파일명 String 에서 확장자 제거 및 추출 방법 (0) | 2020.05.04 |
(Java) Image 파일(로컬, URL) 읽기 (Java File to Image) (0) | 2020.04.30 |
[Java] java.awt.Image를 BufferedImage로 변환하는 방법 (0) | 2020.04.29 |
[Java] 동일 Application 중복 실행 체크하는 방법 (0) | 2020.04.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 스프링부트
- springboot
- 텐트
- 이펙티브
- JavaFX Window Close
- effectivejava
- java
- JavaFX 종료
- 배낭여행
- JavaFX Table View
- 자바
- 배낭 여행
- JavaFX
- 일본여행
- 자전거
- intelij
- 일본 여행
- effective java
- 방통대 과제물
- 일본 자전거 여행
- JavaFX 테이블뷰
- TableView
- 이펙티브 자바
- git
- Java UI
- 자전거 여행
- 이펙티브자바
- 인텔리제이
- windows
- 일본 배낭여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함