無損圧縮画像の心得(二)
6494 ワード
ユーザがこれまでに発熱網で参加するアップロード画像イベントは、いずれも無損圧縮処理されていない.1月にアップロードされた画像をスクリプトで処理したいのですが、Amazon_S3サービスクラスタでは、彼らが提供した簡単なAPIしか使用できません.だから、まずダウンして、圧縮処理してから、元の画像を上書きするしかありません.
複数回のデバッグを経て、最終的にphpのスクリプトを書いて処理する:詳細はここを参照する.
コードは次のとおりです.
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
複数回のデバッグを経て、最終的にphpのスクリプトを書いて処理する:詳細はここを参照する.
コードは次のとおりです.
1: <?php
2: function compress_img ($source) {
3: $exts = array("png","bmp","gif","pnm","tiff");
4: $start_time = strtotime("-30 day");
5: exec("s3cmd ls s3://fever38-us-static/hotdeals/{$source}/ > ./tmp.txt");
6: $rs = file('./tmp.txt');
7:
8: foreach($rs as $line) {
9: $r = array_filter(explode(' ', $line));
10: if(!empty($r[0])){
11: $r[0] = trim($r[0]);
12: $time = strtotime($r[0]);
13: }
14: if(!empty($time) && $time >= $start_time){
15: if(!empty($r[10])){
16: $img = trim($r[10]);
17: $path_info = pathinfo($r[10]);
18: $ext = trim($path_info["extension"]);
19: $file_name = strtolower(trim($path_info["basename"]));
20:
21: exec("s3cmd get ".$img);
22: exec("cp {$file_name} /mnt/heisoo/s3/{$source}/");
23:
24: if (in_array($ext,$exts)) {
25: system("/usr/bin/optipng -o5 ".$file_name);
26: }
27: if ($ext == "jpg" || $ext == "jpeg") {
28: system("/usr/bin/jpegoptim -o --strip-all ".$file_name);
29: }
30: system("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");
31: unlink($file_name);
32: }
33: }
34: }
35:
36: unlink('./tmp.txt');
37: }
38:
39: compress_img("promotion_main_pic");
40: compress_img("src_thumb");
41: compress_img("uploadImage");
42: compress_img("dialog_image");
43: compress_img("joinPicture");
44: ?>
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }