Re: [心得] Imagemagick的縮圖使用

看板PHP作者 (knem)時間16年前 (2009/10/09 08:22), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
最近也在實作縮圖的處理 但是我發現,不管是使用imageMagick 或者是 GD lib 產生出來的thumbnail雖然尺寸比原先小 (png to png) 616*187 => 320*87 但是檔案大小卻反而變大 7K => 15K 另外... 轉換jpg to png 也是一樣 51K => 76K 因此想請問版上大大 像這樣產生thumbnail沒有降低檔案大小,反而卻變得更大 這樣的話還需要額外產生這個thumbnail嗎? ※ 引述《tn801534 (踢恩)》之銘言: : Imagemagick的官網:http://www.imagemagick.org/script/index.php : Imagemagick是一套小型的圖片處理軟體 : 最常用在網頁縮圖上 也可以將圖片加上外框 : 適合想做縮圖 又不會或不想用GD的人 語法相當容易好用 : 而最常使用的就是convert.exe…先說一下我的安裝好了 : 我是安裝在windows2003 server 使用linux的朋友安裝可能要自己解決了... : 我下載下來後安裝到C:/ImageMagick/ : 然後在php裡面只要使用exec(”C:/ImageMagick/convert.exe 參數”) 就可以使用了 : 以下C:/ImageMagick/convert.exe 簡寫成convert當然你也可以define成常數 : 例如:exec("convert -resize 64×64 test.jpg test1.jpg”)就可以將test.jpg改成 : 64×64大小存到test1.jpg : 這是成比例縮放的所以可能不是剛好64×64 : convert -resize 64×64\! 就是不成比例的 : 接下來我就介紹我最常使用的也是官網用的縮圖指令 : convert -resize x300 -resize 300x^< -resize 50% -gravity center -crop 150× : 150+0+0 +repage : 這可以從圖片中間縮出一張150×150的縮圖 不成比例的部分會切除 他是利用先切一張 : 300×300的做法 : 不過這使用上有時候會有bug因為圖小於300×300就會有問題 : 所以我配合上自己檢查寫了下面的語法 : $im = getimagesize($img_src_path); : if($im[0]*0.7>$im[1]){ : exec(convert -resize x245 -gravity center -crop 350×245+0+0 +repage : $img_src_path $conv_img_path”); : } : else{ : exec(convert -resize 350x -gravity center -crop 350×245+0+0 +repage : $img_src_path $conv_img_path”); : } : 上面這是$im[0],$im[1]其實就是圖片的寬與高 : 我這裡是想要切出一個10:7的350×245圖片所以乘以0.7 : 可以根據你想切的圖比例及大小填入 : $img_src_path就是原圖路徑 $conv_img_path就是縮完後路徑 : 我自己使用這個語法是沒有遇到什麼問題 : 其他的使用可以參考 http://www.imagemagick.org/Usage/ : 諸如加文字 外框 浮水印 旋轉 組合 切圖 … -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.39.218

10/09 09:14, , 1F
jpg->png 變大是正常的, png->png google png 壓縮
10/09 09:14, 1F

10/09 10:17, , 2F
感謝~ 後來發現以jpg的方式輸出, 就可以得到比較小的檔案
10/09 10:17, 2F

10/09 12:59, , 3F
你還可以加 -quality 參數
10/09 12:59, 3F
文章代碼(AID): #1Ape96LD (PHP)
討論串 (同標題文章)
文章代碼(AID): #1Ape96LD (PHP)