`
godlovesdog
  • 浏览: 99458 次
社区版块
存档分类
最新评论

两种动态切图实现方案性能比较

阅读更多
    最近在维护图床——图片存储、优化,针对业务需要,一张图片要切成多个尺寸,QPS较低,而此时展现机却非常闲,尝试进行动态切图。实现中对两种切图方案进行比较分析:

1. nginx+php+fastcgi+image filter module+gd

具体实践可参见http://doyoueat.iteye.com/blog/1279493

2. nginx+php+fastcgi+imagick

#ngx conf
     location ~* ^/((resize|mugshot)/(\d+)?_(\d+)?_(\d+)?/)?([^/]*)\.(jpg|png|bmp|gif)$ {
         rewrite ^/((resize|mugshot)/(\d+)?_(\d+)?_(\d+)?/)?([^/]*)\.(jpg|png|bmp|gif)$ /backend/?resize_prefix=$1&type=$2&width=$3&height=$4&quality=$5&key=$6&postfix=$7 last;
     }
location = /backend/ {                    
    internal;                             
    root           ${SRC_ROOT}/apps/fnt ; 
    expires max;                                                     
                                                                
    include        fastcgi_params ;                                  
    fastcgi_pass   127.0.0.1:${CGI_PORT};                            
    fastcgi_index  index.php;                                        
    fastcgi_param  SCRIPT_FILENAME  ${SRC_ROOT}/apps/fnt/index.php ; 
    fastcgi_param  QUERY_STRING     $query_string;                   
                                                                  
    client_max_body_size       100m;                                 
    fastcgi_connect_timeout 1000s;                                   
    fastcgi_send_timeout 1000s;                                      
    fastcgi_read_timeout 1000s;                                      

    使用imagick+php进行图片处理的例子较多(可以参见http://blog.lizhigang.net/archives/228),这里不做详细说明,只以注释的形式说明。
//index.php
/*
 *get image blob && get _GET params
 */
switch($type) //按业务指定的动态切图类型进行处理(按指定边进行缩放或先缩再切,                  etc)                                 
{                                             
case "resize":                                    
    if(!empty($width)&&!empty($height))       
    {                                         
       /*
        *按图片大边进行缩放图片:imagick scale image
        */              
    }                                         
    else if($width||$height)                  
    {                                         
       /*
        *按指定边进行图片缩放:imagick scale image
        */               
    }                                         
    break;                                    
case "mugshot": 
    /*
     *先缩放再从中间切割图片:imagick cropthumbnailImage
     */                                   
    break;
default:
    break;

两种动态切图性能比较:
    测试环境:16*2.4G的cpu,96G内存
1. image filter module
[img]

[/img]
2. imagick



总结:
    从上面两图可以明显看出,随着图片大小的增大,QPS逐渐减小;同样的处理图片,第二种处理方案(php+imagick)比第一种处理方案(image_filter)高出100QPS;第一种处理方案的平均QPS在300左右,第二种方案的QPS在400左右
  • 大小: 43.4 KB
  • 大小: 40.7 KB
分享到:
评论

相关推荐

    百度地图切图工具ie内核、chromium内核

    标题中的“百度地图切图工具ie内核、chromium内核”表明这是一个针对百度地图的特殊工具,它可能具备两种不同的浏览器内核支持,即Internet Explorer(IE)内核和Chromium内核。这两个内核在网页浏览和交互方面扮演...

    符合我公司GIS开源解决方案的探讨

    - 提供CGI和MapScript两种工作模式,其中CGI方式适合CGI、AJAX、Flex开发者,而MapScript则适用于PHP、Java、C#、Python开发者。原生CGI方式下的效率最高,结合TileCache可以高效生成大规模的地图瓦片数据。Map...

    ArcGIS Server缓存地图服务设计部署及应用

    地图服务大致分为两种类型:动态地图服务与缓存地图服务。动态地图服务在每次请求时实时生成地图,虽然提供了灵活性和定制性,但访问速度相对较慢,且制图效果可能受限于服务器性能。而缓存地图服务则预先生成并存储...

    PlistDecoder

    `PlistDecoder`工具正是针对这两种文件类型,提供了一个高效的解决方案,将大图资源切割成小图,并且仅限于处理.plist与.png文件的组合。 在iOS开发中,特别是在UI设计中,为了提高性能和用户体验,开发者通常需要...

    前端开发笔记

    - Sublime和Atom编辑器:这两种编辑器是前端开发中常用的代码编辑工具,支持语法高亮、代码自动补全等功能,极大提高开发效率。 3. 页面制作: - 从视觉稿到前端实现:笔记中讨论了如何将设计稿转换为实际的前端...

    项目管理规范制度.pdf

    - **风格选择**:根据客户偏好设计至少两种不同的界面风格。 - **文档上传**:设计文档统一上传至蓝湖平台。 9. **研发标准** - **工具使用**:规定团队使用的开发工具。 - **异常处理**:制定异常处理机制。 ...

    最新维图软件视频资料下载

    "切图软件如何提高出图速度.mp4"可能是一堂关于提高绘图效率的课程,讲解如何使用维图软件的切图功能快速高效地生成图纸。 最后,"工具箱PDMS项目设置.mp4"可能涵盖了如何设置和管理PDMS项目,PDMS是流行的过程工厂...

    不错的白色调网站模板

    3. **模板设计**:白色调的网站模板通常给人以简洁、专业的感觉,适用于多种场合,如企业官网、个人博客等。模板设计包括了页面的结构、色彩搭配、字体选择以及交互元素的设计。在这个模板中,可能包含了响应式设计...

    OR-027_企业网站网页PSD整站模板.zip

    2. **网站模板**:网站模板是一种预设计的网页布局,包括颜色方案、字体、图像布局等,可以根据需求进行修改和定制,加速网站开发进程。 3. **网页设计原则**:企业网站设计通常需要遵循清晰的导航结构、一致的视觉...

    地图编辑器

    总的来说,"地图编辑器"结合了地图切割和XML生成两大功能,为页游开发提供了一个直观且高效的解决方案。无论是小型独立团队还是大型游戏工作室,都能从中受益,提升地图设计的工作效率和质量。通过深入理解和使用这...

Global site tag (gtag.js) - Google Analytics