-
[Java] 이미지변환 HEIC 등등기초/JAVA 2020. 11. 11. 17:38
•ImageMagick 설치
https://imagemagick.org/script/download.php
[설치테스트]
cmd 실행
magick logo: logo.gif
magick identify logo.gif
magick logo.gif win:
실행되면 완료
변환 명령어
magick convert [old_file] [new_file]
ex) magick convert d:\temp.heic d:\temp.jpg
Java 소스 분석 : cmd실행 (필수)
String magick_path = "C:/Program Files/ImageMagick-7.0.9-Q16/magick.exe"; String org_file = "C:/heic_sampleFile/sample.heic"; String new_file = "C:/heic_sampleFile/sample.png"; Process process =new ProcessBuilder( "cmd", // cmd고정 “/c”, // 권한 옵션 고정 magick_path, // magick.exe 전체 경로 "convert", // convert 옵션 고정 org_file, // 변환 할 이미지 파일 new_file // 변환 될 이미지 파일 ).start();
Java 소스 분석 : cmd출력 데이터 읽기 (선택)
// 외부 프로그램 출력 읽기 BufferedReader stdOut = new BufferedReader(new InputStreamReader(process.getInputStream())); BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream())); // "표준 출력"과 "표준 에러 출력"을 출력 String std_msg; while ((std_msg = stdOut.readLine()) != null) System.out.println(std_msg); while ((std_msg = stdError.readLine()) != null) System.err.println(std_msg);
png, jpg, gif 테스트 완료
Heic파일에서 단일 이미지타입 (jpg,png .. )변환 시
eic파일에 이미지가 1개 이상인 경우 [파일이름]-no로 생성Ex-0 : 합쳐진 원본 or 1번째 이미지 파일
Ex-1~… : 1or2번째 이미지 파일부터 저장
[전체코드]
package tes; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ConvertHeic { public static void main(String[] args) { //magick설치 후 전체경로 String magick_path = "C:/Program Files/ImageMagick-7.0.9-Q16/magick.exe"; //원본이미지 전체경로 String org_file = "C:/Users/GASANDG/Desktop/heic_sampleFile/1.heic"; //저장될 이미지 전체경로 String new_file = "C:/Users/GASANDG/Desktop/heic_sampleFile/1.png"; try { Process process = new ProcessBuilder("cmd", "/c", magick_path, "convert", org_file, new_file).start(); // 외부 프로그램 출력 읽기 BufferedReader stdOut = new BufferedReader(new InputStreamReader(process.getInputStream())); BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream())); // "표준 출력"과 "표준 에러 출력"을 출력 String std_msg; while ((std_msg = stdOut.readLine()) != null) System.out.println(std_msg); while ((std_msg = stdError.readLine()) != null) System.err.println(std_msg); } catch (IOException e) { e.printStackTrace(); } } }
'기초 > JAVA' 카테고리의 다른 글
[JAVA] Stream groupingBy (0) 2022.09.12 자바 정규식 EUC-KR 한글 문제 (0) 2019.06.13 [JAVA] 기초공부 (0) 2017.07.20 [JAVA] 스레드 (0) 2017.02.09 [JAVA] 예외처리 / 예외발생 (0) 2017.02.09