今までブログアップ用の画像の縮小にはフリーソフト縮小専用
使っていました。

この縮小専用の良い所はファイルサイズ制限が出来る事
いつも50KBに制限しているのでブログアップ用の画像は
50KB以下になっています。

50KBなので拡大すると荒いです。

前にMacBook Airを買いmacでも使える縮小ソフトを探しましたが
最大ファイルサイズを指定出来るソフトが無かったので
web上で処理出来るツールを作る事にしました。
ちなみにMac上でも動作する縮小専用Airがありましたが
動作しませんでした。

web上なのでiPhone・Windows・Macどれでも動作します。

最初はドラッグ・アンド・ドロップで処理を開始できる50KB専用としましたが、
ドラッグ・アンド・ドロップにはMini AJAX File Upload Formを使いましたが
JavaScriptからPHPに処理が完全に移らないので、最後にPerlを
使っていましたが、面倒になったので50KB専用は廃止し
isShrinkerにしました。
画像縮小ツールisShrinker

isShrinkerの仕様などはこちらから。

スポンサーリンク

画像の縮小

isShrinkerのベースはこのスクリプトです。
 画像を拡大・縮小する方法
ただしこのままだとJPEGしか対応しないのでimagecreatefrompngを
追加してPNG画像も縮小出来る様にしました。
(出力はJPEGです。)

最初は640px×480pxで縮小しようとしましたが、
画像によっては縦横比が崩れ残念な事になってしまうので、
画像の長辺を固定して短辺を縦横比を維持出来る様
計算する様にしました。

また、ファイルサイズ指定もこのままでは出来ないので
ファイルサイズ指定も自作しました。
これの仕組みは一旦、品質100%で保存し
ファイルサイズ指定が50KB以上なら品質を5%落として再出力、
これでも50KB以上なら繰り返し行います。

一応デフォルトでは画像の長辺640px ・ファイルサイズ50KBにしてあります。
ファイルサイズが50KBのままで長辺を大きくすると画質が落ちるかもしれません。

向き

[PHP] iPhoneからメールで送信した画像の向きを修正する方法
[IOS] iPhone&iPad PHPで画像の向きを変える
iPhoneで撮影した写真は写真の向きを変更して保存されるのでは無く、
元の向きのまま写真を保存して、exif情報の向きの情報を入れてあるだけなので
開発中のisShrinkerで縮小すると向きが逆になっていることがありました。
のでexif情報を見て画像の傾き(向き)通りに画像を修正する様にしました。

また縮小後の画像にはexif情報は引き継がれません。

複数ファイルアップロード

[PHP] 複数ファイルに対応したファイルのアップロード方法
Mini AJAX File Upload Formでも複数画像のアップデートは出来ましたが
PHPに処理が完全に移らず、縮小した画像を表示することができません
でした。
なので、ドラッグ&ドロップではない方法で複数ファイルのアップロード
することにしました。

ドラッグ&ドロップ

Web アプリケーションからファイルを扱う
でもPCの場合一々ダイアログから見つけるのも面倒なので
ドラッグ&ドロップでファイルを選択出来る様にしました。