[매혹 라이브러리 시용 ①] 고속 다기능 이미지 처리 라이브러리'sharp'를 시용합니다.

  • 일상에 녹아들어 큰 은혜를 입은 창고와 포장을 거리낌 없이 시험적으로 사용한 보도 1탄.
  • '개인 개발자의 성과 제품 OSS화 시 극치의 표정'을 보고 싶은 일상.
  • 이번에는 풍부한 이미지 처리군을 준비한 npm 포장'sharp'를 사용해 봅시다.
  • 개요

  • JavaScript 이미지 처리 라이브러리입니다.
  • 유사 라이브러리에는 "jimp"라는 가방이 포함되어 있습니다.
  • 공식 Github
  • 공식 문서
  • 특징


    다양한 이미지 형식 지원

  • jpg, png뿐만 아니라 웹p,svg 등 여러 이미지 형식과도 대응한다.
  • 대응 형식은 여기을 통해 확인한다.
  • 처리 속도가 빠르다

  • 유사한 라이브러리jimp에 비해 처리 속도가 매우 빠르다.
  • 다양한 이미지 처리 기능 준비

  • '형식변환이나 사이즈조정'등 기초적인 처리부터'합성'등 복잡한 처리까지.
  • 결과

  • 다음과 같이 이미지 파일 이름을 지정하고 간단한 js 파일만 실행하면 이미지 변환을 할 수 있습니다.
  • 다음과 같이 형식 변환 외에 기초적인 이미지 처리(예를 들어 회전)

  • 다음과 같이 여러 이미지의 빠른 합성 처리도 가능합니다.


  • 환경

  • Mac OS X 10.13.4
  • NodeJs v11.6.0
  • npm 6.9.0
  • ※ 이번에는 명령의 이미지 처리를 시험적으로 사용하기 위해 웹 응용 프로그램 편입을 하지 않습니다.
  • 설치

  • ※ sharp는 Node입니다.js를 이용하기 위해 설치가 완료되지 않은 경우 여기를 참고하여 설치합니다.
  • npm 설치

  • Node.js 패키지 관리npm가 설치된 경우 다음 명령을 가져옵니다.
  • ※ 이번 제작 작업 폴더는sharp를 설치합니다.
  • # 作業フォルダの作成
    $ mkdir ~/work
    # 作業フォルダへの移動
    $ cd ~/work
    # sharpのインストール(※インストールエラーの場合は、管理者権限で試してみる)
    $ npm install sharp
    

    yarn에 설치

  • Node.js 패키지 관리yarn가 설치된 경우 다음 명령을 가져옵니다.
  • ※ 상기 npm의 절차와 동일하게 작업 폴더를 만들고 여기에sharp를 설치합니다.
  • # 作業フォルダの作成
    $ mkdir ~/work
    # 作業フォルダへの移動
    $ cd ~/work
    # sharpのインストール(※インストールエラーの場合、管理者権限で試してみる)
    $ yarn add sharp
    

    단계


    기본 이미지 형식 변환 예


    이미지 준비

  • 상기 설치 절차에 따라'sharp의 설치 작업 폴더 제작'을 마친 후 파일 구조가 아래와 같은지 확인합니다.
  • ※ yarn 사용 시'yarn.lock'도 추가됩니다.
  • ├─ work
       ├── node_modules
       ├── package-lock.json
    
  • 구조를 확인한 후 변환 대상으로 사용할 그림을 준비하여work 폴더에 넣습니다.
  • ├─ work
       ├── node_modules
       ├── package-lock.json
       ├── penguin.svg
    

    변환 JS 파일 만들기

  • 이미지를 준비한 후 방금 작업 폴더에서 임의의 이름으로 JS 파일을 만듭니다.
  • # 「basic_convert.js」という名前のJSファイルを作成
    $ touch ~/work/basic_convert.js
    
    ├─ work
       ├── node_modules
       ├── package-lock.json
       ├── penguin.svg
       ├── basic_convert.js
    

    JS 파일에 대한 설명

  • 방금 작성한 JS 파일의 내용은 다음과 같습니다.
  • // sharpの読み込み
    const sharp = require("sharp")
    
    sharp(process.argv[2])  // 入力画像名に、コマンドの引数を利用
      .toFile(process.argv[3])  // 出力画像名に、コマンドの引数を利用
      .then(function(data) {
        console.log(data)  // 正常処理の場合、出力画像の情報を出す
      })
      .catch(function(err) {
        console.log(err)  // エラーの場合、エラー情報を出す。
      })
    

    실행 파일

  • 파일에 대한 설명을 한 후 터미널로 돌아가 다음 명령의 이미지를 변환 처리합니다.
  • # 作業フォルダの移動
    $ cd ~/work
    # 例 : 「node 実行ファイル名 フォルダ内の対象画像ファイル名 作成画像ファイル名」
    $ node basic_convert.js penguin.svg penguin.png
    
  • 명령을 실행한 후 만든 파일을 폴더에서 확인할 수 있으면 완료됩니다.
  • 다른 이미지 처리 방법을 이용한 예

  • 'sharp'의 각종 이미지 처리 방법에서 아래의 기초 방법의 이용례를 관찰한다.
  • resize: 이미지 크기 변환 처리
  • composite: 여러 이미지의 합성
  • ※ 기타 방대한 처리 방법 일람 확인여기
  • JS 파일에 대한 설명


  • 각각'resize composite'에 두 개의 js 파일을 만듭니다.
  • resize : resize_convert.js
  • composite : composite_convert.js
  • composite_convert.js 내의 gravity 에서 사용된 합성 위치 목록 확인여기.
  • 을 작성한 후 두 파일의 내용을 다음과 같이 기술한다.
  • ~/work/resize_convert.js
    const sharp = require("sharp")
    
    sharp(process.argv[2])
      // 引数の値を、幅として指定。(高さは自動指定)
      .resize(parseInt(process.argv[4]))
      .toFile(process.argv[3])
      .then(function(data) {
        console.log(data)
      })
      .catch(function(err) {
        console.log(err)
      })
    
    ~/work/composite_convert.js
    const sharp = require("sharp")
    
    sharp(process.argv[2])
      // inputに、合成画像ファイルを、引数で受け取る。
      // gravityに合成位置を指定。
      .composite([{ input: process.argv[3], gravity: process.argv[5] }])
      .toFile(process.argv[4])
      .then(function(data) {
        console.log(data)
      })
      .catch(function(err) {
        console.log(err)
      })
    

    실행 파일

  • 에 기술한 후 터미널로 돌아가 다음 명령의 이미지 변환 처리(대소 조정, 합성)를 합니다.
  • # 作業フォルダへ移動
    $ cd ~/work
    
    # リサイズjsファイルの実行
    # 例:「node ファイル名 対象画像 作成画像名 幅」
    $ node resize_convert.js penguin.png resize_penguin.png 100
    
    # 合成処理jsファイルの実行
    # 例:「node ファイル名 合成画像1 合成画像2 作成画像名 合成方向」
    $ node composite_convert.js penguin.png word.png composite_penguin.png south
    
  • 명령을 실행한 후 만든 파일을 폴더에서 확인할 수 있으면 완료됩니다.

  • 총결산

  • 이번에는 간단한 이미지 처리이기 때문에'복잡하고 고도의 처리가 쉽다'는 현대의 최대 장점에 감사하면서 기사를 쓴다.
  • 프로그램의 즐거움인'통일 처리'와 개인의 취미 조합으로'동물 반전 이미지'를 대량으로 만들어 연휴 중이다.
  • '반전, 합성, 절단'이라는 심오한 작업의 대량 처리가 끝나면 다음 조사를 진행하자.
  • 참고 자료


  • https://github.com/lovell/sharp
    → 공식 Gihub.당신의 보살핌을 받았습니다.

  • https://kamoqq.info/post/nodejs-image-processor-sharp/
    →여기 참고했어.당신의 보살핌을 받았습니다.
  • 좋은 웹페이지 즐겨찾기