Module ngx_http_image_filter_module

Module ngx_http_image_filter_module The ngx_http_image_filter_module module (0.7.54+) is a filter that transforms images in JPEG, GIF, PNG, and WebP formats. This module is not built by default, it should be enabled with the --with-http_image_filter_module

nginx.org

 

  • ngx_http_image_filter_module모듈(0.7.54+)은 JPEG, GIF, PNG 및 WebP 형식의 이미지를 변환하는 필터
  • --with-http_image_filter_module 모듈은 기본적으로 빌드되지 않으며 구성 매개변수로 활성화
  • nginx의 nginx-module-image-filter 모듈에 필요한 library들을 미리 다운로드 → 다운되지 않아서 해당 내용 확인 필요
  • 이미지를 변환하려면 libgd라이브러리를 WebP 지원으로 컴파일필요
      $ yum install -y gd gd-devel libc.so.6 libgd.so.2

 

 

ngx_http_image_filter_module 모듈 사용 예시

location /img/ {
    proxy_pass   http://backend;
    image_filter resize 150 100;
    image_filter rotate 90;
    error_page   415 = /empty;
}

location = /empty {
    empty_gif;
}

 

 

image_filter 지시어

  • 이미지에 수행할 변환 유형을 설정
  • 문맥: location
  • 사용 문법과 사용 예시
      # 문법 : image_filter 설정값
      image_filter off;
      image_filter test;
      image_filter size;
      image_filter rotate 90 | 180 | 270;
      image_filter resize width height;
      image_filter crop width height;

 

  • image_filter 설정값 종류
    1. off
      • 모듈 처리를 종료

    2. test
      • 응답이 JPEG, GIF, PNG 또는 WebP 형식의 이미지인지 확인
      • 그렇지 않으면 415(지원되지 않는 미디어 유형) 오류가 반환

    3. size
      • 이미지에 대한 정보를 JSON 형식으로 출력 → 출력 예시 : { "img" : { "width": 100, "height": 100, "type": "gif" } }
      • 오류 출력 → 출력 예시 : {}

    4. rotate 90|180|270
      • 지정된 각도만큼 이미지를 시계 반대 방향으로 회전함
      • 매개변수 값은 변수를 포함할 수 있음
      • 이 모드는 단독으로 또는 resize및 crop변환과 함께 사용 가능

    5. resize width height
      • 이미지를 지정된 크기로 비례적으로 축소함
      • 한 차원만 줄이려면 다른 차원을 " -"로 지정할 수 있음
      • 오류가 발생하면 서버는 코드 415(지원되지 않는 미디어 유형)를 반환
      • 매개변수 값에는 변수가 포함될 수 있음
      • rotate 매개변수와 함께 사용하면, 이미지의 크기를 축소한 후에 rotate 회전이 발생.

    6. crop width height
      • 비례적으로 이미지를 줄이고 불필요한 가장자리를 다른 면으로 자름 → 해당 이미지를 정해진 크기로 자르는 기능
      • 한 차원만 줄이려면 다른 차원을 " -"로 지정할 수 있음
      • 오류가 발생하면 서버는 코드 415(지원되지 않는 미디어 유형)를 반환
      • 매개변수 값에는 변수가 포함될 수 있음
      • rotate 매개변수와 함께 사용하면, 이미지의 크기를 축소한 후에 rotate 회전이 발생.

 

image_filter_buffer 지시어

  • 이미지를 읽는 데 사용되는 버퍼의 최대 크기를 설정함
  • 크기를 초과하면 서버에서 오류 415(지원되지 않는 미디어 유형)를 반환
  • 문맥: http, server, location
  • 사용 문법과 사용 예시
      # 문법 : image_filter_buffer size;
      image_filter_buffer 1M;

 

image_filter_interlace 지시어

  • 활성화하면 최종 이미지가 인터레이스됨
  • JPEG의 경우 최종 이미지는 "progressive JPEG" 형식이 됨
  • 문맥: http, server, location
  • image_filter_interlace 지시문은 버전 1.3.15에서부터 지원
  • 사용 문법과 사용 예시
      # 문법 : image_filter_interlace on | off;
      image_filter_interlace off;

 

image_filter_jpeg_quality 지시어

  • 변환된 JPEG 이미지 중 원하는 화질을 설정
  • 허용되는 값은 1에서 100 사이
  • 값이 작을수록 일반적으로 이미지 품질이 낮고 전송할 데이터가 적음
  • 최대 권장 값은 95임
  • 매개변수 값은 변수를 포함할 수 있음
  • 문맥: http, server, location
  • 사용 문법과 사용 예시
      # 문법 : image_filter_jpeg_quality quality;
      image_filter_jpeg_quality 75;

 

image_filter_sharpen 지시어

  • 최종 이미지의 선명도를 높일 수 있음
  • 선명도 백분율은 100을 초과할 수 있음
  • 0 값은 선명도를 비활성화
  • 매개변수 값은 변수를 포함할 수 있음
  • 문맥: http, server, location
  • 사용 문법과 사용 예시
      # 문법 : image_filter_sharpen percent;
      image_filter_sharpen 0;

 

image_filter_transparency 지시어

  • GIF 이미지 또는 PNG 이미지를 팔레트로 지정된 색으로 변환할 때 투명도를 유지해야 하는지 여부를 정의
  • 투명도의 손실은 더 나은 품질의 이미지를 만듦
  • PNG의 알파 채널 투명도는 항상 유지됨
  • 문맥: http, server, location
  • 사용 문법과 사용 예시
      # 문법 : image_filter_transparency on|off;
      image_filter_transparency off;

 

image_filter_webp_quality 지시어

  • 변환된 WebP 영상의 원하는 화질을 설정함
  • 허용되는 값은 1에서 100 사이의 범위임
  • 값이 작을수록 일반적으로 이미지 품질이 낮고 전송할 데이터도 적다는 것을 의미함
  • 매개변수 값은 변수를 포함할 수 있음
  • image_filter_webp_quality 지시문은 버전 1.11.6에서부터 지원
  • 문맥: http, server, location
  • 사용 문법과 사용 예시
      # 문법 : image_filter_webp_quality quality;
      image_filter_webp_quality 80;

 

참고 자료

'Nginx > Nginx 모듈 학습' 카테고리의 다른 글

ngx_http_sub_module 모듈  (0) 2023.09.22
ngx_upstream_jdomain 모듈  (0) 2023.09.21
ngx_http_gzip_static_module 모듈  (1) 2023.09.21
ngx_http_gunzip_module 모듈  (0) 2023.09.21
ngx_http_empty_gif_module 모듈  (0) 2023.09.21

+ Recent posts