ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.