본문 바로가기
PROGRAMING📚/Unity📑

[유니티Unity] 유니티에서 원하는 이미지 프린트 출력 하는 방법

별찌루 2023. 3. 31.
728x90
반응형

 

유니티에서 원하는 이미지 프린트 출력 하는 방법

 

 

유니티를 이용해서 원하는 이미지를 출력 하는 방법을

작성 해보려고 한다.

 

유니티에서 프린트를 출력하기 위해서는

출력하고 싶은 이미지가 있는 파일 경로가 존재하는지 확인하고 

윈도우의 그림판 기능을 이용해서 프린트를 하는 방식으로 출력한다.

 

그림판 이용해서 출력하기

using System.IO;
using System.Diagnostics;
public void PrintButtonOn()
    {
        string path = "C:\\Users\\USER\\AppData\\LocalLow\\PrintPictureImage.png";
        FileInfo fileInfo = new FileInfo(path);   //파일 경로 클래스 생성
    
        UnityEngine.Debug.Log(path);
    
        if (fileInfo.Exists) //경로에 파일이 있는지 확인
            System.Diagnostics.Process.Start("mspaint.exe", "/pt " + path);
    }

 

근데 이방식으로 출력하게 되면

그림판의 출력 특성상 여백이 생성된 상태로 출력 된다

 

 

이 문제를 해결하기 위해서는 그림판이 아닌

다른 인쇄 실행 파일을 이요해서 프린트를 해야하는 상황인데..

 

요즘 3D 그림판은 여백이 없이 가능한 것을 발견하고 3D그림판으로 하려고 했는데

MS에서 프로그램 자체 접근을 막아놔서 접근을 아얘 할 수가 없다..

 

인터넷에 검색을 하다가 다음과 같은 방법을 찾았다.

 

바로 [ cmd.exe ] 로 이미지를 출력하는 방법이다.

 

실행파일(cmd)로 출력하기

 

외부 프로그램을 숨김 상태로 실행시키는 방법은

 WindowStyle=Hidden 옵션을 사용하거나

CreateNoWindow 옵션을 사용한다.

 

  public void PrintScreenIMG()
    {
        string printerName = "Sinfonia CHC-S2245"; //본인 인쇄기 이름
        string _filePath = "C:\\Users\\USER\\AppData\\LocalLow\\computer\\chromakey\\Print\\PrintImage.png";
        string fullCommand = "rundll32 C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo " + "\"" + _filePath + "\"" + " " + "\"" + printerName + "\"";
        PrintImage(fullCommand);
    }
    void PrintImage(string _cmd)
    {
        try
        {
            Process myProcess = new Process();
            //외부 프로그램 숨김 상태
            //myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            myProcess.StartInfo.CreateNoWindow = true;
            myProcess.StartInfo.UseShellExecute = false;
            myProcess.StartInfo.FileName = "cmd.exe";
            myProcess.StartInfo.Arguments = "/c " + _cmd;
            myProcess.EnableRaisingEvents = true;
            myProcess.Start();
            myProcess.WaitForExit();
        }
        catch (Exception e)
        {
            UnityEngine.Debug.Log(e);
        }
    }

 

다음 코드를 적어주고 출력 버튼안에 PrintScreenIMG() 함수를 넣어주고

클릭하면 인쇄기에서 이미지가 출력된다.

 

 

 

 

728x90
반응형

댓글