Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: 網路架站

GD vs. Imagick (ImageMagick)

Posted on 2010 年 1 月 10 日2021 年 3 月 12 日 By 日落 在〈GD vs. Imagick (ImageMagick)〉中有 2 則留言

由於之前聽到網路上傳言 ImageMagick 函式庫的效能比 GD 還要好,不過找不到實在測試資料,所以自己來跑測試。

測試方式是由自己的一張全景照片 (512 x 512, 340KB) 分別用 GD 與 ImageMagick 的縮圖函式進行縮圖 (256 x 256),並紀錄執行函式所需要的時間。


產生縮圖用的程式碼分別如下:

Imagick.php:

<?php
function mtime()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}
$img = new Imagick();
$img->readImage('lenna.jpg');

for($a=0;$a<5;$a++){
   $start = mtime();
   $img->resizeImage(256,256,Imagick::FILTER_LANCZOS,1);
   $stop = mtime();
   echo ($stop - $start)."n";
   exec('sleep 1');
}

$img->writeImage('s_imagick.jpg');
$img->clear();
$img->destroy();
?>

gd.php:

<?php
function mtime()
{
          list($usec, $sec) = explode(" ", microtime());
          return ((float)$usec + (float)$sec);
}

$src = imagecreatefromjpeg("lenna.jpg");
$thumb = imagecreatetruecolor(256,256);
$src_w = imagesx($src);
$src_h = imagesy($src);

for($a=0;$a<5;$a++){
   $start = mtime();
   imagecopyresampled($thumb, $src, 0, 0, 0, 0, 256, 256, $src_w, $src_h);
   $stop = mtime();
   exec('sleep 1');
   echo  ($stop - $start)."n";
}

imagejpeg($thumb, "s_gd.jpg");
?>

由於 PHP 原本的 time() 精確度只有到秒,對於這種小圖檔實在不夠用,於是找了 microtime() 來紀錄時間,呼叫 mtime() 以後會傳回當時的毫秒數並以 float 儲存,縮圖完畢在將結束時間與開始時間相減取得執行時間。

分別執行五次並紀錄結果。

使用 ImageMagick 函式庫:

0.050060033798218
0.048804998397827
0.051737070083618
0.048964977264404
0.048758983612061    平均:0.0496652126312256 秒

使用 GD 函式庫:

0.094849109649658
0.095477104187012
0.096488952636719
0.097059011459351
0.098549127578735    平均:0.096484661102295 秒

接下來比較原始圖檔以及縮圖品質。


原始圖 340 KB (點圖放大)


ImageMagick resizeImage() 產生出來的縮圖 50 KB


GD imagecopyresampled() 產生出來的縮圖 12 KB

產生出來的縮圖感覺 ImageMagick 的銳利度較高,可由帽子上的紋路看出。在這次測試時 ImagickMagic 些微勝出。

前一次測試時使用相機拍攝的 2.7M 全景圖製作 3/10 的縮圖,反而是 ImageMagick 較慢,時間接近 GD 的二倍,但是銳利度仍然是 ImageMagick 較高。但 ImageMagick 的銳利度是可以調整的,如果將銳利度降低不知速度是否會加快。

Tags:PHP, 網路架站

Terrible MySQL default config

Posted on 2009 年 11 月 10 日2021 年 3 月 12 日 By 日落 在〈Terrible MySQL default config〉中尚無留言

從 gslin 那裡看到「無論如何都應該修改的 MySQL 預設值」,才知道有這麼鳥的預設值……。

原文:
Fixing Poor MySQL Default Configuration Values
http://jeremy.zawodny.com/blog/archives/011421.html

Tags:網路架站

悶

Posted on 2009 年 10 月 10 日2021 年 3 月 12 日 By 日落 在〈悶〉中尚無留言

整理備審資料實在是件苦差事,搞的沒天沒夜、心情很差。

心情差就會摸魚,然後就生出一個莫名其妙的東西:「What 2 eat」系統。


輸入預算和想吃那一類的東西


電腦會自動幫你挑餐廳,不喜歡再換一家

不過這大概也只有逢甲有這個問題吧 XD

Tags:生活雜記, 網路架站

net-snmp error on FreeBSD

Posted on 2009 年 9 月 27 日2021 年 3 月 12 日 By 日落 在〈net-snmp error on FreeBSD〉中尚無留言

Error message :

/libexec/ld-elf.so.1:
/usr/local/lib/perl5/site_perl/5.8.9/mach/auto/NetSNMP/default_store/default_s
tore.so:
Undefined symbol "Perl_Gthr_key_ptr"
*** Error code 1

Stop in /usr/ports/net-mgmt/net-snmp/work/net-snmp-5.4.2.1.
*** Error code 1

I reinstall perl-5.8 but no use. Finally, I solve the problem by un-checked the option “Use 64 bit integers (on i386)” before compiling perl in the make config menu.

Tags:FreeBSD, 網路架站

FAMP:FreeBSD + Apache + MySQL + PHP

Posted on 2009 年 8 月 5 日2021 年 3 月 12 日 By 日落 在〈FAMP:FreeBSD + Apache + MySQL + PHP〉中有 1 則留言

Install Apache

cd /usr/ports/www/apache22
make WITH_MPM=worker WITH_THREADS=yes install clean

for subversion:

make WITH_MPM=worker WITH_THREADS=yes WITH_AUTH_MODULES=yes WITH_DAV_MODULES=yes WITH_SSL_MODULES=yes WITH_PROXY_MODULES=yes WITH_BERKELEYDB=db42 install clean

然後到 /boot/loader.conf 加入一行

accf_http_load="yes"

讓 Apache 開機時自動啟動,到 /etc/rc.conf 加入一行

apache_enable="YES"

若有看到以下錯誤訊息:

Invalid argument: Failed to enable the 'httpready' Accept Filter

檢查一下核心設定檔是否有加上:

options         ACCEPT_FILTER_HTTP

Install MySQL

cd /usr/ports/databases/mysql51-servermake install clean

如果希望 MySQL 支援 Big5 編碼,請在 Makefile ONFIGURE_ARGS 參數後面新增:「–with-charset=big5」

CONFIGURE_ARGS= --localstatedir=/var/db/mysql --without-debug --without-readline --without-libedit --with-libwrap --with-mysqlfs --with-low-memory --with-comment='FreeBSD port: ${PKGNAME}' --enable-thread-safe-client --with-charset=big5

不過這個缺點是會讓 MySQL 建立新的資料庫時,預設的編碼都選擇 big5,而 big5 已經越來越少用了,所以建議以加上參數的方式,更改對 big5 的支援。

make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci install clean

設定開機自動啟動,在 /etc/rc.conf 加入一行

mysql_enable="YES"

請將適合的 MySQL 設定檔複製到 /etc 底下:

cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

Install PHP

cd /usr/ports/lang/php5make install clean

修改 Apache 設定檔

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

參考資料:
http://blog.twku.net/2005/10/15/18/

ps.餅乾又出現了 0.0

最後修改日期:2009/08/06

Tags:FreeBSD, 作業系統, 網路架站

文章分頁

上一頁 1 ... 6 7 8 ... 12 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.