nginx 이미지 이용filter 동적 생 성 미리 보기 그림

2822 단어
"저 는 지금 미리 보기 그림 을 만들어 야 할 그림 이 있 습 니 다. 이 그림 은 이미 image filter 를 추 가 했 습 니 다. 이것 은 이미 실현 되 었 지만 제 가 올 린 원 도 를 어떻게 방문 해 야 할 지 모 르 겠 습 니 다."
처음에는 잘 안 될 것 같 아서 프로그램 구역 으로 처리 하 라 고 했 는데 실제로 머리 를 좀 써 서 분석 해 봐 도 프로그램 을 수정 하지 않 고 동적 생 성 미리 보기 그림 을 만 들 고 원 도 를 방문 할 수 있 습 니 다.
전 제 는 그림 의 접근 규칙 을 정 해 야 한 다 는 것 이다.
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 디 렉 터 리 에 있다 고 가정 하 십시오.
접근 미리 보기 그림 방식http://www.xxx.cn/img/9GUMJR7200AJ0003_90x90. jpg 원본 접근 방식http://www.xxx.cn/img/9GUMJR7200AJ0003_90x0.jpghttp://www.xxx.cn/img/9GUMJR7200AJ0003_0x50.jpghttp://www.xxx.cn/img/9GUMJR7200AJ0003_0x0.jpghttp://www.xxx.cn/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 {
            
        }

좋은 웹페이지 즐겨찾기