ImageMagickで加工したものをデータベースに保存したい
-
新規投稿画面で画像を投稿したものをImageMagickで加工し
表示させるところまではできましたが
データベースに登録する方法がわからず質問させていただきます。自分なりに書いてみたソースは以下となります。
$photo = new Imagick($shashin);
$photo->sepiaToneImage(80);
header(‘Content-Type: image/jpeg’);
$photo->setImageFormat(‘jpeg’);
$photo->setCompressionQuality(80);
$photo->writeImage(‘kakougo.jpg’);//ここでの保存もうまくいきましたが通常保存される場所とは違うので通常保存される場所に保存したいと考えています
echo $photo;//ここの表示はうまくいっています
add_post_meta( $post_id, ‘kakou_key’, $photo);get_post_customで値を取得してみると
O:7:”Imagick”:0:{}などと表示されるのですが
画像が出てきません。また画像の保存に関しても一応は成功しているのですが
通常保存される場所(/wp-content/uploads)とは違うので
通常通り動的に保存をしたいと考えています。(可能であればリネームして)さらに可能であれば通常の画像投稿と同じように
アンカータグつきで本文にhtmlを挿入するところまでもっていきたいと
考えておりますが、いかんせん登録の段階で躓いている状態です。wordpress,phpの知識が足らず解決できていないとは思うのですが
ヒントだけでもいただけたら非常に助かります。
よろしくお願いします。
-
get_post_customで値を取得してみると
O:7:”Imagick”:0:{}などと表示されるのですが
画像が出てきません。シリアライズされているようなので、
http://www.php.net/manual/ja/function.unserialize.phpやった事はないですが、アップロードした画像は、投稿と紐付けされているので、同名で保存してやるほうが簡単だと思います。
セピア色に変更したいという事のようですが、試してはいませんが、以下のようにクライアントサイドで、モノクロにするような方法もあるみたいです。
http://www.pryde-design.co.uk/2011/08/greyscale-jquery-plugin/nobitaさんご回答ありがとうございます。
シリアライズされているようなので、
ありがとうございます。
これはまったく知りませんでした><
参考になります。自分なりにいろいろと調べてコードを書いてみましたが
エラーとなってしまいます。
お手数ですがさらにアドバイスなどいただけましたらうれしく思います。頂いた書き込みから前出のfunctions.phpに書いた
add_post_metaはうまくいっていると判断し
呼び出しをしている個別ページテンプレートに下記ソースを書きテストしました。◆テスト1
$custom_fields = get_post_custom($post_id);
$my_custom_field = $custom_fields[‘upload_image’];
$my_custom_field_serigo = unserialize($my_custom_field);
echo $my_custom_field_serigo;【エラー】
Warning: unserialize() expects parameter 1 to be string, array given in single.php on line◆テスト2
$custom_fields = get_post_custom($post_id);
$my_custom_field = $custom_fields[‘upload_image’];
$my_custom_field_serigo = maybe_unserialize(base64_decode($my_custom_field));
foreach ( $my_custom_field_serigo as $key => $value )
echo $key . ” => ” . $value . “”;【エラー】
Warning: base64_decode() expects parameter 1 to be string, array given in single.php on line
Warning: Invalid argument supplied for foreach() in single.php on lineお手数をおかけいたしますがまたアドバイスなどいただけたらうれしいです。
よろしくお願いいたします。こんにちは、
カスタムフィールドに、画像を保存しても、表示する時に、header()を付けないと、画像は表示できないので、画像をカスタムフィールドに保存する方法は、難しいと思います。例えば、uploads/hoge.jpg を呼び出して画像を加工したら、
$photo->writeImage('uploads/hoge.jpg');
見たいな感じで、画像を入れ替えるという方法になると思います。
(実際に試していないので、それで出来るとまでは言えませんが)留意してほしいのは、
http://example.com/imagick.php?hoge.jpg
等として、画像の書き換えスクリプトを実行したりする場合は、気をつけないと、外部からの書き換えを可能にする脆弱性を生むので、よく検討してください実験的に、画像をhtmlに埋め込みたいという事なら、
http://allabout.co.jp/gm/gc/23977/
<img src="data:image/gif;base64,エンコードデータ">
のように記述する事は出来ますが、IEでは表示できません
nobitaさん
ご回答ありがとうございます!$photo->writeImage(‘uploads/hoge.jpg’);
見たいな感じで、画像を入れ替えるという方法になると思います。こちらを参考に自分で指定したディレクトリに画像を保存することにしました。
add_post_metaでできないことがあること、シリアライズなど
非常に参考になりました!ありがとうございました!
- トピック「ImageMagickで加工したものをデータベースに保存したい」には新たに返信することはできません。