<td id="aqqih"></td>

<dd id="aqqih"></dd>
  1. <span id="aqqih"></span>
  2. <ol id="aqqih"></ol>

    Nginx代理輸出縮放圖片怎么實現

    本篇內容介紹了“Nginx代理輸出縮放圖片怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    nginx 配置文件:

    #?document?ppt?convert?configuration.
    upstream?document.polyv.net?{
    ?server?127.0.0.1:8080;
    }
    server?{
    ?listen?80;
    ?server_name?document.polyv.net;
    ?index?index.html?index.htm;
    ?charset?utf-8;
    ?client_max_body_size?1000m;
    ?#?ignore?favicon.ico?not?exist.
    ?location?=?/favicon.ico?{
    ??log_not_found?off;
    ??access_log?off;
    ?}
    ?#?not?allow?to?visit?hidden?files.
    ?location?~?/\.?{
    ??deny?all;
    ??access_log?off;
    ??log_not_found?off;
    ?}
    ?location?/?{
    ??if?($request_filename?~*?^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$)?{
    ???add_header?content-disposition:?'attachment;';
    ???add_header?content-type:?'application/octet-stream';
    ??}
    ??proxy_pass?http://document.polyv.net;
    ??proxy_set_header?x-real-ip?$remote_addr;
    ??proxy_set_header?x-forwarded-for?$proxy_add_x_forwarded_for;
    ??proxy_set_header?request_host?$host;
    ??#?include?proxy.conf;
    ??charset?utf-8;
    ?}
    ?#?user?upload?files
    ?location?/images/?{
    ???#expires?7d;
    ??alias?/data03/ovp/blobs/;
    ???proxy_store?on;
    ???proxy_store_access?user:rw?group:rw?all:rw;
    ???proxy_set_header?accept-encoding?"";
    ???if?(?!-f?$request_filename?)?{
    ????proxy_pass?http://document.polyv.net;
    ???}
    ?}
    ?location?/blobs/?{
    ???#expires?7d;
    ??alias?/data03/ovp/blobs/;
    ?}
    ??location?/preview/images/?{
    ???#expires?7d;
    ???alias?/data03/ovp/blobs/;
    ???proxy_store?on;
    ???proxy_store_access?user:rw?group:rw?all:rw;
    ???proxy_set_header?accept-encoding?"";
    ???if?(?!-f?$request_filename?)?{
    ????proxy_pass?http://document.polyv.net;
    ???}
    ??}
    }

    代理輸出縮放圖片

    package?com.document.handle.controller;
    import?java.io.bufferedinputstream;
    import?java.io.file;
    import?java.io.ioexception;
    import?java.io.outputstream;
    import?java.net.httpurlconnection;
    import?java.net.url;
    import?javax.servlet.http.httpservletrequest;
    import?javax.servlet.http.httpservletresponse;
    import?org.apache.commons.lang3.stringutils;
    import?org.slf4j.logger;
    import?org.slf4j.loggerfactory;
    import?org.springframework.stereotype.controller;
    import?org.springframework.web.bind.servletrequestutils;
    import?org.springframework.web.bind.annotation.pathvariable;
    import?org.springframework.web.bind.annotation.requestmapping;
    import?com.document.tool.imagemagickutils;
    import?com.document.tool.systemconfig;
    @controller
    public?class?imageagentcontroller?{
    ?private?static?final?logger?log?=?loggerfactory.getlogger(imageagentcontroller.class);
    ?/**
    ??*?ppt預覽圖片代理輸出
    ??*?@throws?ioexception
    ??*/
    ?@requestmapping("/preview/images/{year}/{month}/{md5id}/{preview}/{filename}.{ext}")
    ?public?void?cropimage(@pathvariable?string?year,?@pathvariable?string?month,?@pathvariable?string?md5id,
    ???@pathvariable?string?preview,?@pathvariable?string?filename,?@pathvariable?string?ext,
    ???httpservletrequest?request,?httpservletresponse?response)?throws?ioexception?{
    ??//?string?rootdir?=?"/data03/ovp/blobs/";
    ??string?rootdir?=?systemconfig.getblobdirectory();
    ??string?oname?=?filename.substring(1,?filename.length());//?原圖文件名
    ??string?dirstring?=?rootdir?+?year?+?"/"?+?month?+?"/"?+?md5id?+?"/"?+?oname?+?"."?+?ext;
    ??string?targetfilestring?=?rootdir?+?year?+?"/"?+?month?+?"/"?+?md5id?+?"/preview/"?+?filename?+?"."?+?ext;
    ??//如果原圖存在
    ??file?originimage?=?new?file(oname);
    ??if(originimage.exists()){
    ???log.info("corpimage..."?+?dirstring?+?"?->?"?+?targetfilestring);
    ???file?newfile?=?new?file(targetfilestring);
    ???string?pathstring?=?newfile.getparent();
    ???log.info("pathstring...{}?{}",?pathstring);
    ???file?pathfile?=?new?file(pathstring);
    ???if?(!pathfile.exists())?{
    ????log.info("---create?file---");
    ????pathfile.mkdirs();
    ???}
    ???boolean?status?=?imagemagickutils.scale(dirstring,?targetfilestring,?240,?180);
    ???if?(status)?{
    ????response.reset();
    ????response.setcontenttype("image/"?+?ext);
    ????java.io.inputstream?in?=?new?java.io.fileinputstream(targetfilestring);
    ????//?filenameurlutils.getimagefilename(targetfilestring);
    ????if?(in?!=?null)?{
    ?????byte[]?b?=?new?byte[1024];
    ?????int?len;
    ?????while?((len?=?in.read(b))?!=?-1)?{
    ??????response.getoutputstream().write(b);
    ?????}
    ?????in.close();
    ????}
    ???}
    ??}else{
    ???log.info("原圖目錄不存在-preview:{}",dirstring);?
    ??}
    ?}
    ?/**
    ??*?ppt固定尺寸圖片代理輸出
    ??*?@throws?ioexception
    ??*?https://cache.yisu.com/upload/ask_collection/20210726/113/19154.png
    ??*
    ??*?http://document.polyv.net/images/2016/03/de37d2ceb11ac068c18c5e4428541075/jpg-3.png
    ??*/
    ?@requestmapping("/images/{year}/{month}/{md5id}/{filename}/{width}x{height}.{ext}")
    ?public?void?cropfixedimage(@pathvariable?string?year,?@pathvariable?string?month,?@pathvariable?string?md5id,
    ???@pathvariable?string?filename,?@pathvariable?integer?width,?@pathvariable?integer?height,?@pathvariable?string?ext,
    ???httpservletrequest?request,?httpservletresponse?response)?throws?ioexception?{
    ??//?string?rootdir?=?"/data03/ovp/blobs/";
    ??string?rootdir?=?systemconfig.getblobdirectory();
    ??//string?oname?=?filename.substring(1,?filename.length());//?原圖文件名
    ??string?dirstring?=?rootdir?+?year?+?"/"?+?month?+?"/"?+?md5id?+?"/"?+?(?filename?+?"."?+?ext);
    ??string?targetfilestring?=?rootdir?+?year?+?"/"?+?month?+?"/"?+?md5id?+?"/"?+?filename?+?"/"?+?(width?+?"x"?+?height?+?"."?+?ext);
    ??//如果原圖存在
    ??file?originimage?=?new?file(dirstring);
    ??if(originimage.exists()){
    ???file?targetfilestringfile?=?new?file(targetfilestring);
    ???if(!targetfilestringfile.exists()){
    ????log.info("corpimage..."?+?dirstring?+?"?->?"?+?targetfilestring);
    ????file?newfile?=?new?file(targetfilestring);
    ????string?pathstring?=?newfile.getparent();
    ????log.info("pathstring...{}?{}",?pathstring);
    ????file?pathfile?=?new?file(pathstring);
    ????if?(!pathfile.exists())?{
    ?????log.info("---create?file---");
    ?????pathfile.mkdirs();
    ????}
    ????imagemagickutils.resizewh(dirstring,?targetfilestring,width,height);
    ???}
    ???response.setcontenttype("image/"?+?ext);
    ???java.io.inputstream?in?=?null;
    ???try{
    ????in?=?new?java.io.fileinputstream(targetfilestring);
    ????response.setcontentlength(in.available());
    ????byte[]?buffer?=?new?byte[1024];
    ????int?count?=?0;
    ????while?((count?=?in.read(buffer))?>?0)?{
    ?????response.getoutputstream().write(buffer,?0,?count);
    ????}
    ????response.flushbuffer();
    ???}catch(exception?e){
    ????e.printstacktrace();
    ???}finally?{
    ????try?{
    ?????in.close();
    ????}?catch?(exception?e)?{
    ????}
    ???}
    ??}else{
    ???log.info("原圖目錄不存在:{}",dirstring);
    ??}
    ?}
    ?/**
    ??*?圖片下載
    ??*/
    ?@requestmapping("get/image/data")
    ?public?void?downloadimage(httpservletrequest?request,?httpservletresponse?response)?throws?ioexception?{?
    ??string?filepath?=?servletrequestutils.getstringparameter(request,?"filepath",?"");?//圖片訪問路勁
    ??string?filename?=?servletrequestutils.getstringparameter(request,?"filename",?"");?//名稱
    ??if(stringutils.isnotblank(filepath)?||?stringutils.isnotblank(filename)){
    ???string?desturl?=?filepath;
    ???//log.info("--------------"+filepath);?
    ???string?fileformat=filepath.substring(filepath.lastindexof("."));
    ???//string?name=filename.trim()+fileformat;
    ???string?name=filepath.substring(filepath.lastindexof("/")+1,?filepath.length());?
    ???//file?f?=?new?file(filepath);
    ???//response.setheader("content-disposition",?"attachment;?filename="+java.net.urlencoder.encode(f.getname(),"utf-8"));?
    ???//log.info("--------------"+f.getname());
    ???//?建立鏈接?
    ???url?url?=?new?url(desturl);?
    ???httpurlconnection?httpurl?=?(httpurlconnection)?url.openconnection();?
    ???//?連接指定的資源?
    ???httpurl.connect();?
    ???//?獲取網絡輸入流?
    ???bufferedinputstream?bis?=?new?bufferedinputstream(httpurl.getinputstream());?
    ???integer?lenf=httpurl.getcontentlength();
    ???//string?lenf=this.getfilelength(4189053,?7189053);
    ???response.setcontenttype("application/x-msdownload");?
    ???response.setheader("content-length",?lenf.tostring());//文件大小值5幾m
    ???response.setheader("content-disposition",?"attachment;?filename="+java.net.urlencoder.encode(name,"utf-8"));
    ???outputstream?out?=?response.getoutputstream();
    ???byte[]?buf?=?new?byte[1024];?
    ???if?(desturl?!=?null)?{?
    ????bufferedinputstream?br?=?bis;?
    ????int?len?=?0;?
    ????while?((len?=?br.read(buf))?>?0){?
    ?????out.write(buf,?0,?len);?
    ????}?????
    ????br.close();?
    ???}?
    ???out.flush();?
    ???out.close();?
    ??}
    ?}?
    }

    圖片縮放的業務

    package?com.document.tool;
    import?java.io.ioexception;
    import?javax.swing.imageicon;
    import?org.apache.commons.exec.commandline;
    import?org.apache.commons.exec.defaultexecuteresulthandler;
    import?org.apache.commons.exec.defaultexecutor;
    import?org.apache.commons.exec.executeexception;
    import?org.apache.commons.exec.executewatchdog;
    import?org.apache.commons.exec.executor;
    import?org.slf4j.logger;
    import?org.slf4j.loggerfactory;
    /**
    ?*?使用imagemagick對圖片文件進行處理的工具類。
    ?*?@author?xingning?ou
    ?*/
    public?abstract?class?imagemagickutils?{
    ?private?static?final?string?executable_convert?=?"/usr/bin/convert";?//?convert命令
    ?private?static?final?string?executable_composite?=?"/usr/bin/composite";?//?composite命令
    ?private?static?final?long?execute_timeout?=?30?*?60?*?1000l;?//?30?minutes
    ?private?static?final?logger?log?=?loggerfactory.getlogger(imagemagickutils.class);
    ?/**
    ??*?執行圖片處理的命令。
    ??*?@param?cmdline?待執行的命令
    ??*?@return?exitvalue,一般等于0時表示正常運行結束
    ??*?@throws?executeexception?命令執行失敗時拋出此異常
    ??*?@throws?ioexception?當發生io錯誤時拋出此異常
    ??*?@throws?interruptedexception?當等待異步返回結果被中斷時拋出此異常
    ??*/
    ?public?static?int?executecommandline(commandline?cmdline)?throws?executeexception,?ioexception,
    ?interruptedexception?{
    ??executor?executor?=?new?defaultexecutor();
    ??executor.setexitvalue(0);
    ??//?kill?a?run-away?process?after?execute_time?milliseconds.
    ??executewatchdog?watchdog?=?new?executewatchdog(execute_timeout);
    ??executor.setwatchdog(watchdog);
    ??//?execute?the?print?job?asynchronously.
    ??defaultexecuteresulthandler?resulthandler?=?new?defaultexecuteresulthandler();
    ??executor.execute(cmdline,?resulthandler);
    ??//?some?time?later?the?result?handler?callback?was?invoked.
    ??resulthandler.waitfor();
    ??//?so?we?can?safely?request?the?exit?value.
    ??return?resulthandler.getexitvalue();
    ?}
    ?/**
    ??*?按照高寬比例縮小圖片。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?width?圖片圖片的寬度
    ??*?@param?height?目標圖片的高度
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?scale(string?src,?string?dst,?int?width,?int?height)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-scale");
    ??cmdline.addargument(width?+?"x"?+?height);
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("縮略圖片時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?按照高寬比例縮小圖片。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?width?圖片圖片的寬度
    ??*?@param?height?目標圖片的高度
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?thumbnail(string?src,?string?dst,?int?width,?int?height)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-thumbnail");
    ??cmdline.addargument(width?+?"x"?+?height);
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("縮略圖片時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?添加圖片水印。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?logofile?水印圖片
    ??*?@param?dissolve?和水印的融合度,0-100的數字
    ??*?@param?gravity?疊放方向,east,west,north,south,northeast,northwest,southeast,southwest
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?drawlogo(string?src,?string?dst,?string?logofile,?int?dissolve,?string?gravity)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_composite);
    ??cmdline.addargument("-dissolve");
    ??cmdline.addargument(dissolve?+?"%");
    ??cmdline.addargument("-gravity");
    ??cmdline.addargument(gravity);
    ??cmdline.addargument(logofile);
    ??cmdline.addargument(src);
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("添加圖片水印時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?添加圖片水印。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?logofile?水印圖片
    ??*?@param?dissolve?和水印的融合度,0-100的數字
    ??*?@param?x?水印距離左下角的距離
    ??*?@param?y?水印距離右下角的距離
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?drawlogo(string?src,?string?dst,?string?logofile,?int?dissolve,?int?x,?int?y)?{
    ??imageicon?icon?=?new?imageicon(src);
    ??int?width?=?icon.geticonwidth();?//?源圖的寬
    ??int?height?=?icon.geticonheight();?//?源圖的高
    ??string?_x?=?string.valueof(width?-?x);?//?在x軸上水印圖片的左上頂點距離圖片左上角的距離
    ??string?_y?=?string.valueof(height?-?y);?//?在y軸上水印圖片的左上頂點距離圖片左上角的距離
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_composite);
    ??cmdline.addargument("-dissolve");
    ??cmdline.addargument(dissolve?+?"%");
    ??cmdline.addargument("-geometry");
    ??cmdline.addargument(_x?+?"+"?+?_y);
    ??cmdline.addargument(logofile);
    ??cmdline.addargument(src);
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("添加圖片水印時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?裁剪圖片。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?width?目標寬度
    ??*?@param?height?目標高度
    ??*?@param?left?裁剪位置:距離左邊的像素
    ??*?@param?top?裁剪位置:距離上邊的像素
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?crop(string?src,?string?dst,?int?width,?int?height,?int?left,?int?top)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-crop");
    ??cmdline.addargument(width?+?"x"?+?height?+?"+"?+?left?+?"+"?+?top);
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("裁剪圖片時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?獲取矩形的小圖。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?width?目標寬度
    ??*?@param?height?目標高度
    ??*?@param?left?裁剪位置:距離左邊的像素
    ??*?@param?top?裁剪位置:距離上邊的像素
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?croprect(string?src,?string?dst,?int?width,?int?height,?int?left,?int?top)?{
    ??imageicon?icon?=?new?imageicon(src);
    ??int?origwidth?=?icon.geticonwidth();
    ??int?origheight?=?icon.geticonheight();
    ??int[]?s?=?new?int[2];
    ??if?(origwidth?<?origheight)?{?//?以寬為標準
    ???s?=?getsize(origwidth,?origheight,?width,?height,?1);
    ??}?else?{//?以高為標準
    ???s?=?getsize(origwidth,?origheight,?width,?height,?2);
    ??}
    ??if?(thumbnail(src,?dst,?s[0],?s[1]))?{
    ???return?crop(src,?dst,?width,?height,?left,?top);
    ??}
    ??return?false;
    ?}
    ?/**
    ??*?加邊框。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?borderwidth?邊框的寬度
    ??*?@param?borderheight?邊框的高度
    ??*?@param?bordercolor?邊框的顏色
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?border(string?src,?string?dst,?int?borderwidth,?int?borderheight,?string?bordercolor)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument("-bordercolor");
    ??cmdline.addargument(bordercolor);
    ??cmdline.addargument("-border");
    ??cmdline.addargument(borderwidth?+?"x"?+?borderheight);
    ??cmdline.addargument(src);
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("加圖片邊框時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?轉換圖片格式。
    ??*?@param?src?源圖片
    ??*?@param?dst?目標圖片
    ??*?@param?format?轉換的格式
    ??*?@return?是否處理成功
    ??*/
    ?public?static?boolean?format(string?src,?string?dst,?string?format)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-format");
    ??cmdline.addargument("'"?+?format?+?"'");
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("轉換圖片格式時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?轉換無限極的tiff圖片。
    ??*/
    ?public?static?boolean?converttiff(string?src,?string?dst)?{??
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-colorspace");
    ??cmdline.addargument("rgb");
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("轉換圖片格式時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?獲得要壓縮圖片的大小。
    ??*?@param?w?圖片的原寬度
    ??*?@param?h?圖片的原高度
    ??*?@param?width?標準寬
    ??*?@param?height?標準高
    ??*?@param?type?類型?1-以寬為標準壓縮?2-以高為標準壓縮?3-以比例大小壓縮
    ??*?@return?size[0]-要壓縮的寬度,?size[1]-要壓縮的高度
    ??*/
    ?public?static?int[]?getsize(double?w,?double?h,?double?width,?double?height,?int?type)?{
    ??if?(w?<?width)?{//?如果原寬度比標準寬度小
    ???width?=?w;
    ??}
    ??if?(h?<?height)?{//?如果原高度比標準高度小
    ???height?=?h;
    ??}
    ??double?scale?=?w?/?h;
    ??switch?(type)?{
    ???case?1:
    ????height?=?width?/?scale;
    ????break;
    ???case?2:
    ????width?=?height?*?scale;
    ????break;
    ???case?3:
    ????if?(width?/?height?>?scale)?{
    ?????width?=?height?*?scale;
    ????}?else?if?((width?/?height)?<?scale)?{
    ?????height?=?width?/?scale;
    ????}
    ????break;
    ??}
    ??int[]?size?=?new?int[2];
    ??size[0]?=?(int)?width;
    ??size[1]?=?(int)?height;
    ??return?size;
    ?}
    ?/**
    ??*?指定寬度。
    ??*?@param?src
    ??*?@param?width
    ??*?@param?dst
    ??*/
    ?public?static?boolean?resize(string?src,?int?width,?string?dst)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-resize");
    ??cmdline.addargument(width?+?"");
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("縮略圖片時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    ?/**
    ??*?指定寬度、高度。
    ??*?@param?src
    ??*?@param?width
    ??*?@param?dst
    ??*/
    ?public?static?boolean?resizewh(string?src,string?dst,?int?width,?int?height?)?{
    ??//?構建命令
    ??commandline?cmdline?=?new?commandline(executable_convert);
    ??cmdline.addargument(src);
    ??cmdline.addargument("-resize");
    ??cmdline.addargument(width?+?"x"?+?height?+"!");
    ??cmdline.addargument(dst);
    ??try?{
    ???executecommandline(cmdline);
    ???return?true;
    ??}?catch?(exception?e)?{
    ???log.error("縮略圖片時發生異常,cause:?",?e);
    ???return?false;
    ??}
    ?}
    }

    服務器上要安裝imagemagick。

    “Nginx代理輸出縮放圖片怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注蝸牛博客網站,小編將為大家輸出更多高質量的實用文章!

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    評論

    日本韩欧美一级A片在线观看
    <td id="aqqih"></td>

    <dd id="aqqih"></dd>
    1. <span id="aqqih"></span>
    2. <ol id="aqqih"></ol>