Nginx 에 image filter 모듈 을 설정 하여 동적 생 성 미리 보기 그림 을 만 듭 니 다.

3048 단어
nginx 의 image filter 모듈 이 무엇 인지 살 펴 보 겠 습 니 다.
HttpImageFilterModule 은 지 정 된 크기 로 너무 큰 그림 을 자 르 는 데 사 용 됩 니 다. nginx 자체 테이프 모듈 입 니 다. 기본적으로 HttpImageFilterModule 을 열지 않 습 니 다. 컴 파일 할 때 인 자 를 가 져 와 야 합 니 다 - with - httpimage_filter_module
이 모듈 은 주로 두 가지 명령 이 있 습 니 다: 문법: imagefilter (test | size | resize width height | crop width height) 기본 값: 나타 날 수 없 는 컨 텍스트: location
이 명령 은 그림 의 변환 형식 을 지정 합 니 다:
test - 답장 이 JPEG, GIF, PNG 그림 (BMP 등 다른 형식 은 지원 되 지 않 음) 인지 테스트 하고 오류 가 발생 했 을 때 415 를 되 돌려 줍 니 다.size - 그림 의 JSON 데 이 터 를 되 돌려 줍 니 다. 예 를 들 어 ("Img": ("width": 100, "height": 100, "type": "gif") resize - 설정 에 따라 비례 하여 그림 을 줄 여야 합 니 다. 예 를 들 어 100 * 100 의 그림 은 50 * 25 이 고 줄 인 그림 은 25 * 25 입 니 다.한 차원 만 설정 하고 싶다 면 '-' 로 대체 할 수 있다.오류 가 발생 했 을 때 415 로 돌아 갑 니 다.crop - 설정 에 따라 비례 하여 그림 을 줄 이 고 설정 과 같은 크기 의 그림 으로 재단 합 니 다.예 를 들 어 100 * 100 의 그림 인 데 설정 은 50 * 25 이 고 줄 인 그림 은 50 * 50 이 며 Nginx 는 중간 높이 25 의 픽 셀 을 선택 하여 50 * 25 의 그림 을 형성 하기 때문에 그림 이 부족 할 수 있다.한 차원 만 설정 하고 싶다 면 '-' 로 대체 할 수 있다.오류 가 발생 했 을 때 415 로 돌아 갑 니 다.
문법: imagefilter_buffer size 기본 값: imagefilter_buffer 1M 가 나타 날 수 있 는 위치: http, server, location
이 명령 은 단일 그림 캐 시 의 최대 값 을 설정 합 니 다. 걸 러 낸 그림 크기 가 캐 시 크기 를 초과 하면 415 로 오 류 를 보고 합 니 다.
지금부터 중점:
위 와 같은 인식 이 생기 면 로 케 이 션, if, imagefilter 는 nginx 동적 으로 미리 보기 그림 을 만 들 수 있 습 니 다.
그림 이 / img 디 렉 터 리 에 있다 고 가정 하 십시오.
미리 보기 그림 접근 방식 / / www. jb51. net / img / 9GUMJR7200AJ 000390x90. jpg 원본 접근 방식 / / www. jb51. net / img / 9GUMJR7200AJ 000390x0.jpg //www.jb51.net/img/9GUMJR7200AJ0003_0x50.jpg //www.jb51.net/img/9GUMJR7200AJ0003_0x0.jpg //www.jb51.net/img/9GUMJR7200AJ0003.jpg
server 컨 텍스트 에 다음 설정 을 추가 하면 됩 니 다.

    location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ {      
      set $h $2;
      set $w $3;
      if ($h = "0") {
        rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
      }
      if ($w = "0") {
        rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
      }

      #            
      image_filter resize $h $w;
      #    2M,        2M  415  ,      image_filter_buffer 
      image_filter_buffer 2M;             
      
      #error_page 415       /img/notfound.jpg;
      try_files /img/$1.$4 /img/notfound.jpg; 
    }

    location ~* /img {
      
    }


미리 보기 그림 생 성 은 imagefilter 기능 중 하 나 는 모두 4 가지 인 자 를 지원 합 니 다.    test: 진짜 그림 인지 되 돌려 줍 니 다.    size: 그림 길이 되 돌리 기    corp: 그림 의 일부분 캡 처    크기 조정: 그림 크기 조정

location ~ ^/test/(.*)$ {
      image_filter size;
      root  /var/www/_xxx;
      index index.html index.htm;
    }


출력 정보 유사:

{ "img" : { "width": 1024, "height": 537, "type": "jpeg" } }

JSON 인 데 스트레스 테스트 를 해 봤 는데 기 똥 차 요. 500 개가 병발 하고 CPU 가 17% 정도 차지 해 요.

좋은 웹페이지 즐겨찾기