WordPress.com如何动态调整图像大小?

时间:2012-05-07 02:05:30

标签: php wordpress image-resizing dynamic-image-generation wordpress.com

注意:这个问题很棘手(决定它是否属于SO),但这不是简单的WordPress问题。

我听说WordPress.com有一个单独的基础设施层(基于Nginx的服务器),用于完全独立于托管的WordPress博客的图像。

问题是,WordPress.com博客上的任何图片都可以通过附加w(宽度)和/或h(高度)参数来调整大小,如下所示:

http://serenescribe.files.wordpress.com/2012/04/cropped-p1000206.jpg?w=400
http://serenescribe.files.wordpress.com/2012/04/cropped-p1000206.jpg?h=200

该脚本是否可在网上获得? (因为,他们always say “我们坚信开源,我们尽力开源。”

大多数动态图像大小调整脚本都是不安全的,非常容易受到攻击(Tim Thumb)或写得不好,或者以性能为代价。是/有什么好的吗?

PS:可能还有其他一些动态图像大小调整脚本,例如TimThumb。但我只对WordPress.com博客使用的内容感兴趣。

2 个答案:

答案 0 :(得分:3)

(1)使用TimThumb,然后重新调整图片大小就像附加一些参数一样简单:

http://example.com/timtumb.php?src=wp-content/uploads/2010/03/high_res_horsey.png&w=300&h=100

(2)然后在您网站的根.htaccess文件中添加这些重写规则:

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.(gif|png|jpg|jpeg)
RewriteCond %{QUERY_STRING} (w|h)=(.*)$
RewriteRule (.*) /full/path/to/timthumb.php?src=$1&%1=%2&%3=%4 [L]

规则的快速细分:

  1. 检查URI是否作为文件存在。
  2. 检查相关URI是否为图片。根据需要扩展到其他格式。
  3. 检查宽度和高度中的一个或两个是否被改变。
  4. 将以下文件作为变量传递给timthumb:
    • $ 1 =文件名
    • %1 = w或h
    • %2 = w或h的值
    • %3 = w或h
    • %4 = w或h
    • 的值
  5. (3)现在,您可以像在WordPress.com上一样调整图片大小,例如:

    http://example.com/wp-content/uploads/2010/03/high_res_horsey.png?w=300&h=100

    来自http://www.myrant.net/2011/03/07/mimicking-wordpress-coms-image-resize-uris/

答案 1 :(得分:0)

我创建了一个简单的插件,可以根据markratledge提供的解决方案帮助其他人。

您可以在https://github.com/ubc/wave-resize-image找到它。

确保按照readme.txt中的说明更新.htaccess文件,以使其正常工作。