Nginx + Lua + GraphicsMagick 동적 으로 지 정 된 사이즈 의 그림 생 성

1193 단어
  • 직면 한 문제
  • 사이트 의 수요 변경 은 서로 다른 사이즈 의 미리 보기 그림
  • 이 필요 합 니 다.
  • 일부 그림 의 미리 보기 그림 은 거의 사용 되 지 않 지만 하 드 디스크 에 존재 하여 공간 낭 비 를 초래한다
  • .
  • 해결 방법
  • Nginx 는 Lua 모듈 과 함께 접근 한 그림 이 존재 하지 않 으 면 GraphicsMagick 명령 행 을 사용 하여 지 정 된 크기 의 그림 을 실시 간 으로 생 성 합 니 다.
    - Lua 모듈 을 통합 한 Nginx 프로젝트 OpenResty
    - Graphics Magick 설치 및 사용
    - 구체 적 인 사용법
    원본 그림 주소:
    /images/f47aa98b47b4b7bd.jpg
    사용자 정의 그림 크기:
    /images/f47aa98b47b4b7bd_40x40.jpg
    프로필 에 이렇게 쓸 수 있 습 니 다.
    location ~ '/images/([0-9a-z]+)_([0-9]+)x([0-9]+).jpg$' {
        root /home/images;
        set $image_root =  '/home/images';
        set $fileName = ngx.arg[1];
        set $width = ngx.arg[2];
        set $height = ngx.arg[3];
        set $origin = $image_root/$fileName.jpg
        set $file = $image_root/$fileName_$widthx$height.jpg
        if (!-f $file) {
            rewrite_by_lua '
                local command = "gm convert "..ngx.var.origin.." -thumbnail "..ngx.var.width.."x"
                                ..ngx.var.height.." "..ngx.var.file;
                os.execute(command);
             ';
     }
    

    이렇게 하면 그림 이 지정 한 사이즈 의 미리 보기 그림 을 간단하게 생 성 할 수 있다.

    좋은 웹페이지 즐겨찾기