最近在维护图床——图片存储、优化,针对业务需要,一张图片要切成多个尺寸,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内核”表明这是一个针对百度地图的特殊工具,它可能具备两种不同的浏览器内核支持,即Internet Explorer(IE)内核和Chromium内核。这两个内核在网页浏览和交互方面扮演...
- 提供CGI和MapScript两种工作模式,其中CGI方式适合CGI、AJAX、Flex开发者,而MapScript则适用于PHP、Java、C#、Python开发者。原生CGI方式下的效率最高,结合TileCache可以高效生成大规模的地图瓦片数据。Map...
地图服务大致分为两种类型:动态地图服务与缓存地图服务。动态地图服务在每次请求时实时生成地图,虽然提供了灵活性和定制性,但访问速度相对较慢,且制图效果可能受限于服务器性能。而缓存地图服务则预先生成并存储...
`PlistDecoder`工具正是针对这两种文件类型,提供了一个高效的解决方案,将大图资源切割成小图,并且仅限于处理.plist与.png文件的组合。 在iOS开发中,特别是在UI设计中,为了提高性能和用户体验,开发者通常需要...
- Sublime和Atom编辑器:这两种编辑器是前端开发中常用的代码编辑工具,支持语法高亮、代码自动补全等功能,极大提高开发效率。 3. 页面制作: - 从视觉稿到前端实现:笔记中讨论了如何将设计稿转换为实际的前端...
- **风格选择**:根据客户偏好设计至少两种不同的界面风格。 - **文档上传**:设计文档统一上传至蓝湖平台。 9. **研发标准** - **工具使用**:规定团队使用的开发工具。 - **异常处理**:制定异常处理机制。 ...
"切图软件如何提高出图速度.mp4"可能是一堂关于提高绘图效率的课程,讲解如何使用维图软件的切图功能快速高效地生成图纸。 最后,"工具箱PDMS项目设置.mp4"可能涵盖了如何设置和管理PDMS项目,PDMS是流行的过程工厂...
3. **模板设计**:白色调的网站模板通常给人以简洁、专业的感觉,适用于多种场合,如企业官网、个人博客等。模板设计包括了页面的结构、色彩搭配、字体选择以及交互元素的设计。在这个模板中,可能包含了响应式设计...
2. **网站模板**:网站模板是一种预设计的网页布局,包括颜色方案、字体、图像布局等,可以根据需求进行修改和定制,加速网站开发进程。 3. **网页设计原则**:企业网站设计通常需要遵循清晰的导航结构、一致的视觉...
总的来说,"地图编辑器"结合了地图切割和XML生成两大功能,为页游开发提供了一个直观且高效的解决方案。无论是小型独立团队还是大型游戏工作室,都能从中受益,提升地图设计的工作效率和质量。通过深入理解和使用这...