M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2006年3月22日 01:21

MacOSX10.3のコマンドラインで、特定ファイルサイズ以内に納めるように圧縮率を変更して保存するスクリプト(手抜き)

このエントリーをはてなブックマークに追加 mixiチェック

DTP駆け込み寺:市販の一括圧縮ソフト [gande.co.jp]

で、フリーソフト使っちゃだめって言う要件なので、Mac OS X だけで作ってみたけど、すごい手抜き。

#!/usr/bin/perl
# fllename: jpegsizelimit.pl
# usage: perl jpegsizelimit.pl hoge.jpg
 
my $target_size = 1024 * 1024; # 1MB
 
open (FH,"<table.txt"); # あらかじめtable.txtていう
                        # 圧縮比ルックアップテーブルを
                        # 用意しておいてね
while(<FH>) {
  chomp;                # 改行コードをチョップしとくよ。
  ($a,$b) =split("\t",$_); # タブ区切り。
  $table[$a] = $b;      # 配列に入れる。
}
 
$filename = shift @ARGV; # コマンドラインから1つしか引数とらないよ
$tempfile = "temp.jpg";  # カレントディレクトリに
                         # temp.jpgとるという極悪仕様です。
                         # fie::temp 使えばいいのにね。
system("sips -s format jpeg -s formatOptions 100 $filename --out $tempfile");
$max_size = -s $tempfile;
$target_ratio = $target_size/$max_size;
 
for ( $i = 0; $i<101; ++$i) { # 圧縮率テーブル探索。
  if ($table[$i] > $target_ratio) {
    last;
  }
}
 
$target_value = $i-1;   # ここで、sipsに入れる圧縮のパラメタが決まるよ!
 
system("sips -s format jpeg -s formatOptions $target_value $filename --out new_$filename");
                        # 頭にnew_をつけた適切な圧縮率になっている
                        # と思われるJPEG 生成するよ。
 

投稿 大野 義貴 [Script] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1592

コメント(3)

perlは、立派なフリーソフトでしょ。OSに同梱されてるからといって、同じだと思いますけど。OSに入ってる物はOKで、ダウンロードした物はNG??
パッケージになってればいいというなら、フリーソフトを集めたCDを販売している物はOKか?


要は、市販かどうかなどという馬鹿げた基準ではなく、きちんと自分で評価して使える物は使うという姿勢が欲しいな..と。
市販だって、責任は取りませんから、、オーダーメードでない限り、市販・フリーは(責任という観点からは)同じレベルです。
(安心してる分、市販の方が罪は重いか)

ソフトの質という点からは、色々とありますが。そこは、プログラマの質次第。

追伸
せっかく書いても、フリーのスクリプトでは使ってもらえません。
有償(¥50,000)とかすると、使ってもらえるかもしれません^^

一番最初の投稿の雰囲気からすると、OS にビルトインのものはセーフな気がしたんですけどねー

プライバシーマークや ISMS 対策でフリーソフト禁止という社内ルール作ってしまうと、こういうときやっかいですね。でも、フリーソフトを検査なしでインストールしていると不適合になるという罠。

コメントする