首頁 後端開發 php教程 无损压缩图片心得(二)_PHP教程

无损压缩图片心得(二)_PHP教程

Jul 20, 2016 am 11:15 AM
上傳 壓縮 參與 圖片 處理 心得 活動 使用者

用户之前在发烧网参加的上传图片活动都没有经过无损压缩处理.想用脚本对一月内传上去的图片进行处理,但Amazon_S3服务集群上只能使用他们提供的一些简单的API.所以只能先down 下来,压缩处理后,再传上去覆盖原来的图片.

经过多次调试,最终写了个php的脚本对之进行处理:详见这里.

代码如下:

<span class="lnum">   1:  </span><?php
登入後複製
<span class="lnum">   2:  </span><span class="kwrd">function</span> compress_img ($source) {
登入後複製
<span class="lnum">   3:  </span>    $exts = array(<span class="str">"png"</span>,<span class="str">"bmp"</span>,<span class="str">"gif"</span>,<span class="str">"pnm"</span>,<span class="str">"tiff"</span>);
登入後複製
<span class="lnum">   4:  </span>    $start_time = strtotime(<span class="str">"-30 day"</span>);
登入後複製
<span class="lnum">   5:  </span>    exec(<span class="str">"s3cmd ls s3://fever38-us-static/hotdeals/{$source}/ > ./tmp.txt"</span>);
登入後複製
<span class="lnum">   6:  </span>    $rs = file(<span class="str">'./tmp.txt'</span>);
登入後複製
<span class="lnum">   7:  </span>&#160;
登入後複製
<span class="lnum">   8:  </span>    <span class="kwrd">foreach</span>($rs <span class="kwrd">as</span> $line) {
登入後複製
<span class="lnum">   9:  </span>        $r =  array_filter(explode(<span class="str">' '</span>, $line));
登入後複製
<span class="lnum">  10:  </span>        <span class="kwrd">if</span>(!empty($r[0])){
登入後複製
<span class="lnum">  11:  </span>            $r[0] = trim($r[0]);
登入後複製
<span class="lnum">  12:  </span>            $time = strtotime($r[0]);
登入後複製
<span class="lnum">  13:  </span>        }
登入後複製
<span class="lnum">  14:  </span>        <span class="kwrd">if</span>(!empty($time) && $time >= $start_time){
登入後複製
<span class="lnum">  15:  </span>            <span class="kwrd">if</span>(!empty($r[10])){
登入後複製
<span class="lnum">  16:  </span>                $img = trim($r[10]);
登入後複製
<span class="lnum">  17:  </span>                $path_info = pathinfo($r[10]);
登入後複製
<span class="lnum">  18:  </span>                $ext = trim($path_info[<span class="str">"extension"</span>]);
登入後複製
<span class="lnum">  19:  </span>                $file_name = strtolower(trim($path_info[<span class="str">"basename"</span>]));
登入後複製
<span class="lnum">  20:  </span>&#160;
登入後複製
<span class="lnum">  21:  </span>                exec(<span class="str">"s3cmd get "</span>.$img);
登入後複製
<span class="lnum">  22:  </span>                exec(<span class="str">"cp {$file_name} /mnt/heisoo/s3/{$source}/"</span>);
登入後複製
<span class="lnum">  23:  </span>&#160;
登入後複製
<span class="lnum">  24:  </span>                <span class="kwrd">if</span> (in_array($ext,$exts)) {
登入後複製
<span class="lnum">  25:  </span>                    system(<span class="str">"/usr/bin/optipng -o5 "</span>.$file_name);
登入後複製
<span class="lnum">  26:  </span>                }
登入後複製
<span class="lnum">  27:  </span>                <span class="kwrd">if</span> ($ext == <span class="str">"jpg"</span> || $ext == <span class="str">"jpeg"</span>) {
登入後複製
<span class="lnum">  28:  </span>                    system(<span class="str">"/usr/bin/jpegoptim -o --strip-all "</span>.$file_name);
登入後複製
<span class="lnum">  29:  </span>                }
登入後複製
<span class="lnum">  30:  </span>                system(<span class="str">"s3cmd put {$file_name} {$img} --guess-mime-type --add-header 'Cache-Control:max-age=31536000' --add-header 'Expires: Thu, 01 Dec 2014 16:00:00 GMT' --acl-public"</span>);
登入後複製
<span class="lnum">  31:  </span>                unlink($file_name);
登入後複製
<span class="lnum">  32:  </span>            }
登入後複製
<span class="lnum">  33:  </span>        }
登入後複製
<span class="lnum">  34:  </span>    }
登入後複製
<span class="lnum">  35:  </span>&#160;
登入後複製
<span class="lnum">  36:  </span>    unlink(<span class="str">'./tmp.txt'</span>);
登入後複製
<span class="lnum">  37:  </span>}
登入後複製
<span class="lnum">  38:  </span>&#160;
登入後複製
<span class="lnum">  39:  </span>compress_img(<span class="str">"promotion_main_pic"</span>);
登入後複製
<span class="lnum">  40:  </span>compress_img(<span class="str">"src_thumb"</span>);
登入後複製
<span class="lnum">  41:  </span>compress_img(<span class="str">"uploadImage"</span>);
登入後複製
<span class="lnum">  42:  </span>compress_img(<span class="str">"dialog_image"</span>);
登入後複製
<span class="lnum">  43:  </span>compress_img(<span class="str">"joinPicture"</span>);
登入後複製
<span class="lnum">  44:  </span>?>
登入後複製

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440176.htmlTechArticle用户之前在发烧网参加的上传图片活动都没有经过无损压缩处理.想用脚本对一月内传上去的图片进行处理,但Amazon_S3服务集群上只能使用他...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何用小紅書號找出用戶?能查到手機號碼嗎? 如何用小紅書號找出用戶?能查到手機號碼嗎? Mar 22, 2024 am 08:40 AM

如何用小紅書號找出用戶?能查到手機號碼嗎?

小紅書發布自動儲存圖片怎麼解決?發布自動保存圖片在哪裡? 小紅書發布自動儲存圖片怎麼解決?發布自動保存圖片在哪裡? Mar 22, 2024 am 08:06 AM

小紅書發布自動儲存圖片怎麼解決?發布自動保存圖片在哪裡?

以超級使用者登入Ubuntu 以超級使用者登入Ubuntu Mar 20, 2024 am 10:55 AM

以超級使用者登入Ubuntu

抖音評論裡怎麼發圖片?評論區圖片入口在哪裡? 抖音評論裡怎麼發圖片?評論區圖片入口在哪裡? Mar 21, 2024 pm 09:12 PM

抖音評論裡怎麼發圖片?評論區圖片入口在哪裡?

WIN10服務主機太佔cpu的處理操作過程 WIN10服務主機太佔cpu的處理操作過程 Mar 27, 2024 pm 02:41 PM

WIN10服務主機太佔cpu的處理操作過程

ppt怎麼讓圖片一張一張出來 ppt怎麼讓圖片一張一張出來 Mar 25, 2024 pm 04:00 PM

ppt怎麼讓圖片一張一張出來

王者榮耀共赴花期活動攻略大全 王者榮耀共赴花期活動攻略大全 Mar 24, 2024 pm 12:36 PM

王者榮耀共赴花期活動攻略大全

7-zip最大壓縮率設定,7zip如何壓縮到最小 7-zip最大壓縮率設定,7zip如何壓縮到最小 Jun 18, 2024 pm 06:12 PM

7-zip最大壓縮率設定,7zip如何壓縮到最小

See all articles