WP plugin: 画像アップロードオプション+透かし署名 - Flexible Upload
私のしたかったことを二つほど実現してくれそうなプラグインが、orioa さんで紹介されていました。わくわくしながらトラーイ。
| 機能概要 | 画像アップロード時の各種オプション(画像リサイズ、サムネイル作成有無・サイズ指定)を追加。画像への透かし署名1 挿入、Lightbox との連携も可能。 |
|---|---|
| バージョン | 1.1 |
| 作者(web) | Antoine Choppin さま |
| 配布元 | Ma Tasse de Thé » Flexible Upload |
| ドキュメント | |
| 動作見本 |
こちらの写真はこれを使ったものかも?署名付き |
| 「ページ」対応 | ○ (たぶん。アップロードオプションは出たので。) |
| 注 |
透かし署名機能を使うには ImageMagick の composite が必要 |
| 適用したWP | WordPress ME 2.0.4 [UTF-8] |
この記事は書き途中です。後で追加・訂正等が入ります。
目次:
導入手順
本家版 WP に入れる場合
- 配布元よりダウンロード。
- 解凍した
flexible-uploadフォルダごとwp-content/plugins/ディレクトリへアップロード。 - (オプション)透かし署名
- 画像に署名を入れたい場合は、
flexible-upload/signature.gifを自分の画像に差し替える。 - この機能が不要なら、
flexible-upload/signature.gifを削除。
- 画像に署名を入れたい場合は、
- 管理パネルにて有効化。
ME 2.0.4 に入れる場合の追加作業
ME の場合、上記だけでは何も起こらない。
プラグイン中に WP バージョンによる振り分け処理がある。ME はバージョン番号に「ME」という文字が入っていて、処理対象外になってしまうのだ。(・;)
そこで、次のように小細工。
flexible-upload/flexible-upload.php 73行目から、次のコードがあるので、
global $wp_version;
$ver = (float)$wp_version;
$fup_rel_dir = 'wp-content/plugins/flexible-upload/';
if ( ($ver >= 2.0) && ($ver < 2.1) ) {
// When called in the plugin context, define the filter to use this
// script, instead of the existing inline-uploading.php script
【中略: WP 2.0.x 用処理】
}
else if ($ver >= 2.1) {
require_once(ABSPATH.$fup_rel_dir.'flexible-upload-wp21.php');
}
$wp_versionはwp-includes/version.phpで定義されている。ME 2.0.4 の場合は、’ME2.0.4‘。
変更 2007.2.16: 初回カスタマイズ2 があまりにも手抜きだったので、コード変更。
74行目(float してるとこ)を、強調部分の2行に差し替えるのみ。
str_replace で ME を消してから float(浮動小数点数)に変換するようにした。
global $wp_version;
// $ver = (float)$wp_version;
$ver = str_replace("ME", "", $wp_version);
$ver = (float)$ver;
$fup_rel_dir = 'wp-content/plugins/flexible-upload/';
if ( ($ver >= 2.0) && ($ver < 2.1) ) {
// When called in the plugin context, define the filter to use this
// script, instead of the existing inline-uploading.php script
【中略: WP 2.0.x 用処理】
}
else if ($ver >= 2.1) {
require_once(ABSPATH.$fup_rel_dir.'flexible-upload-wp21.php');
}
動いたけど、コーディングとしてこれでいいのかは分からない。。(^-^;
オプション設定
flexible-upload/flexible-upload.php 66行目から。日本語コメントはぼの。
//////////////////////////////////////////////////////////////////////////////
// Plugin configuration
//////////////////////////////////////////////////////////////////////////////
define('FUP_DEFAULT_LARGE_MAX', 640); // 画像リサイズ Normal 選択時の値
define('FUP_DEFAULT_THUMB_MAX', 200); // サムネイルサイズ Small の値
define('FUP_WATERMARK_PIC', 'wp-content/plugins/flexible-upload/signature.gif'); // 透かし画像名・パス
define('FUP_COMPOSITE_PATH', '/usr/bin/composite'); // ImageMagick の composite へのパス
define('FUP_USE_LIGHTBOX', true); // Lightbox2 用に rel="lightbox" を入れる?
define('FUP_USE_ALIGNMENT', true); // 記事での画像配置指定(左寄せ・右寄せ・中央)をするか?
使い方
- 有効化すると、記事投稿・ページ作成画面のファイルアップロード窓にオプション選択部が現れる。
- 本文への画像挿入画面のオプションにも「Align left」が追加される。クリックで →「Align right」→「Align center」→ と切り替わる。
テスト:
- Plugin configuration はいじらず。
- 元画像は 200×200px の JPEG。
- アップロード時に
- タイトル: タイトル
- 概要: 概要
- Resize image? → Custom size : 150px (largest side)
- Create a thumbnail? → Custom size : 100px (largest side)
- 記事への挿入時に
- サムネイルを使用
- 画像へリンク
- Align right
- 結果
- オリジナル画像(サムネイルじゃない方)も 150×150px に縮小された。
- 透かし処理は失敗(後述)。
- 「概要」欄に記入したものがキャプションとして表示される。(下記挿入コード参照)
記事に挿入されたコード:
<div class="imageframe" style="width:100px; float:right;"><a class="imagelink" href="http://bono.s206.xrea.com/wp/wp-content/uploads/oge02042625.jpg" rel="lightbox" title="タイトル"><img id="image343" src="http://bono.s206.xrea.com/wp/wp-content/uploads/oge02042625.thumbnail.jpg" alt="タイトル" height="100" width="100" /></a><div class="imagecaption">概要</div></div>
透かし機能
まだ使えてない。。
サムネイルサイズオプションとこれが使いたかったのにな。。。くすん。(;_;) → できた。次節参照
これを使うには、ImageMagick の ‘composite’ utility が必要とのこと。
- 参照: 配布元のコメント欄で Antoine さまより回答(2007-02-14 11pm)あり。
- ImageMagick » Command-line Tools: Composite
そうすると、考えられそうなのはここらへん:
- OK s201 で ImageMagick の composite が使えない? → 使える
- コレ composite のパスが違う? →
/usr/local/php/bin/composite - OK セーフモードだとだめ?(ここだけ CGI モードにすればいける?) → セーフモードでも OK
- OK 重ねる画像の形式が違ってもいい?(アップするのが jpeg、署名が gif ) → これはよさげ
function fup_transform_image()の中の if 文の条件のどれかで引っかかってる?- OK アップロード時にリサイズを選択してる?
- OK
FUP_WATERMARK_PICの値が入ってる? - OK
$watermarkのファイルが存在する? - コレ
FUP_COMPOSITE_PATHのファイルが存在する? → パスは合ってても、file_exists()があるとダメ。
- OK 署名画像の縦・横サイズ両方が、アップ画像(リサイズ後)より小さい?
- OK
-geometryオプションがだめとか? → 動いた。
できた!できたよー!
2007.3.2 追記:
- サポ板に ImageMagick のパスは載っていたが、それプラス
compositeでは透かしが入らず。 - アップロードスクリプトを CGI版で動かそうとすると、アップロードフレームが白いままでいつまで経っても表示されない。
- XREA へ問い合わせ、composite のパスとモジュール版PHP(セーフモード)でも動くことを教えてもらう。3
パスを合わせてもだめだったので、考えられそうなこと(前節)を試したところ、次の状態で動いた。
flexible-upload.php67行目 composite のパス修正define('FUP_COMPOSITE_PATH', '/usr/local/php/bin/composite');同 122行目付近4
&& file_exists(FUP_COMPOSITE_PATH)をコメントアウト。$watermark = ABSPATH.FUP_WATERMARK_PIC; if (FUP_WATERMARK_PIC != '' && file_exists($watermark) /*&& file_exists(FUP_COMPOSITE_PATH)*/) {アップロード時に、「Resize image?」は No thanks 以外を選ぶ。
リサイズしないときは透かし処理もスキップされるため。
テスト:
オジェの写真(400×320px)+
(39×31px)+(リサイズ:300px, サムネイル:100px) =
(リサイズ後 300×240px)
このときの$wat_cmd の値:
/usr/local/php/bin/composite -geometry +261+209 $watermark5 $file6 $file.tmp7
このコマンドで、リサイズ済み画像の左上から +261+209 の位置から署名画像を重ねる処理をしている。この座標は、右下端に署名が付くように、画像サイズから逆算されている。
XREA 向け補足 new
2007.3.7 追記:
ImageMagick の composite : 全サーバ共通とのことです。
/usr/local/php/bin/composite(PHP・CGIから)
/usr/local/bin/composite(CGIから)コマンド自体は、モジュール版とCGI版ともに使用可能です。
ファイル書き込み・読み込みは、お呼び出し元のディレクトリ内で行ってください。file_exists(FUP_COMPOSITE_PATH)をコメントアウトする理由 :- XREA のモジュール版PHP はセーフモード
で、composite が safe_mode_include_dir 下にないためなので、file_existsで false が返る。でも、使うことはできる。false が返るのと safe_mode_include_dir の関係は不明。。 -
この関数は セーフモード の制限のためファイルにアクセスできない場合 FALSE を返します。 しかし safe_mode_include_dir で指定されたディレクトリに存在する場合は included することができます。
safe_mode_include_dir
/usr/local/lib/php8PHPマニュアルの「例 596. あるファイルが存在するかどうか調べる」を実行したところ、次のメッセージが出た。
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/usr/local/php/bin/composite) is not within the allowed path(s): (.:/virtual:/tmp:/usr/local/lib/php) in /***/***/public_html/***.php on line 19 The file /usr/local/php/bin/composite does not exist
- XREA のモジュール版PHP はセーフモード
未解決・試してみたいこと update
2007.3.2, 3.7 追記:
- 済 composite のパスは合っていて、処理もできるのに、
file_exists()で引っかかるのはなぜ? → 解決。前節に追記。 - 生成コード(タグ)の修正。
<div>の直下はブロック要素がくるべきなので。どうするのがいいか考えてみる。 - 透かし署名を、リサイズしないときも入れられるようにしてみる。if 文を出せば OK なはず。
- アップロード時に、透かしを入れる/入れないと選べるといいかも。
- composite のオプションで、重ねる画像の透け具合を調節できるか調べる。
- 追記 2007.3.7: このあたりのオプションでできそう。
- IM v6 Examples — Compose —
-dissolveか-watermark - IM v6 Examples — Annotating Images - Watermarking
- IM v6 Examples — Compose —
- 追記 2007.3.7: このあたりのオプションでできそう。
- `a watermark signature` をこう訳したけど、実際には透けない。composite のオプションをいじれば変えられるかも。[back]
- 初代手抜き版は:
とりあえず 77行目の if 文(上の強調部分)をこんな感じに。 (注)手抜きすぎです。。if ( ($ver >= 2.0) && ($ver < 2.1) || $wp_version == 'ME2.0.4' ) {[back]
- ありがとうございました。
[back] - ME用修正を入れているので少しずれてます。[back]
- 署名画像パス[back]
- リサイズ済み画像[back]
- 合成後画像[back]
phpinfo()で確認。[back]



プラグインも温めの燗がいい…
WPをはじめてから、画像挿入系のプラグインはありとあらゆるものを試してみて、その中でたどり着いたのが一番最初に取り付けた「IImage Browser 日本語版」でした (more…)
こんにちは、Flexible Uploadプラグインを作ったAntoine (アントワン)です。
Flexible Uploadは僕の最初のプラグインで、まだまだ改善の余地がいっぱいあると思います。
それにかかわらず、興味を示してくれて本当にすみません。
これからもアップデートしていくつもりですので、リクエスト等があれば、プラグインページへコメントをどうぞ(日本語でも結構です)。
ひとまず、Wordpress MEのバージョンをちゃんとサポートすることですね。(すっかり忘れていました、すみません。)
それでは。
Antoineさん、こんにちは。このページを書いた ぼの と申します。
書き込みありがとうございますー。(^-^)
Flexible Upload はとてもいいプラグインですね。
以前からサムネイルサイズを変更したかったのと、watermark は他のスクリプトを自分で組み込もうかと思っていたところだったので、このプラグインで両方とも簡単に出来るようになって、本当にうれしいです。
WordPress ME までサポートしてもらえたら、さらにうれしいです。
これからいろいろ試してみて、プラグインに取り込んでもらえたらなあということ等があれば、リクエストさせていただきますね。(お言葉に甘えて日本語で…。(笑))
今後ともよろしくお願いいたします。
[...] 新たに、「 Flexible upload 」が良さそうで、カスタムに画像の大きさを変えられるというのは魅力です。 Ref: WP plugin: 画像アップロードオプション+透かし署名 - Flexible Upload それに、ImageMagickを使うと透かしを入れたりできるそうで、これは新しい! ImageMagickをパッと見ただけですが、楽しそう!これが簡単に導入できるようになったら、IImage Browserから乗り換えると思います。 これはもう、ぼのさんに懸かってます。あはは [...]
Rikaさん、こんにちはー。(^-^)
読みましたよー。ふふふ( ̄ー ̄) ImageMagick、使えるようになっちゃいました。
ささ、お嬢様、乗り換えのご準備を。(笑)
$wat_cmd =のとこのパラメータをいじると、透かしの入れ方も変えられるので(-geometry以外もオッケー)、遊んでみてくださいー。[...] WP plugin: 画像アップロードオプション+透かし署名 - Flexible Upload [...]