昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

質問全般・改善要望
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月10日(火) 11:03

MODXに、企業サイトのCMSにおけるデファクトスタンダードになってもらいたい応援者です!
大企業のものすごいページ数のサイトとまでは対応しないでいいと思います。中小企業のサイトにおいてスタンダードになって欲しいです!

なぜなら、WordPressは表示が遅いですし、プラグインが平気でバージョンアップで使えなくなることがあり、
厳しいものがあります。また、ブログから出立したCMSなので普通のサイト、企業サイトとして使おうとすると
カスタマイズ度が高過ぎます。
それに引き替えMODXは、表示スピードが速いですし、バージョンアップして○○ができなくなった、ということが
今のところあまりないように思います。
そして、オリジナルのデザインが仕込みやすいです。

私見ですが、企業サイトの基本的機能がしっかりと作りこまれた段階で、MODXは有料にしてもいいのではないか、
と思うほどです。
・ニュース投稿機能で必要となる機能が一揃い揃っている
・問い合わせフォームがセキュアに作りこまれていて、なおかつフォームの全種類のスタイルが簡単に作れる
・フォームから送信されたデータがMySQLに保存されて、管理画面で管理できる(絞込みのリスティング、メール配信など)
などなど、これらのことが仕込まれていれば企業サイトの基本機能はクリアできるのではないでしょうか。
スタッフの皆様、これからも是非頑張って下さい。陰ながら応援しております!

さて本題です。
自社サイトのニュース投稿時に、「どこどこでイベントやりました」「社員旅行行きました」などというデジカメ写真を、
IT知識乏しい上役さんが投稿しようとします。
しかし、昨今のデジカメはどれも高画質です。
また、IT知識がある投稿者であっても、アップロードする画像をいちいちリサイズしてからアップロードするというのは
とても手間がかかります。

MODXは画像の投稿時の機能では、サイズだけは指定サイズとなるのですが、実際に画像がリサイズされるわけではないので
投稿ページを開いたとき、画像部分の読み込みにえらく時間がかかります。高解像度の画像を単に縮小表示しているだけなので。
また、サーバの容量もどんどん食ってしまいます。
ここを是非とも自動リサイズしてくれるようになって欲しいです。
是非ともご検討を!
※万一、最新バージョンでは直っているなどということがあれば申し訳ありません。
アバター
enogu
メンバー
メンバー
記事: 32
登録日時: 2009年9月02日(水) 23:56

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by enogu » 2012年4月11日(水) 02:13

はじめまして。MODX Evolution初心者のくろいえのぐと申します

画像ファイルをリサイズしたいとのお話ですが、 OnFileManagerUpload イベントにフックするプラグインを作ってみてはどうでしょうか。

注:2012年4月10日現在、以下のサンプルは全くテストされていません。またImageMagick拡張ライブラリが導入されていない環境では動作しません。
追記(2012-04-13): 軽くバグを取ってきました。jpeg、png、gifでアップロードが機能するはずです。注:このバージョンでは圧縮率を向上させるため、jpeg画像の品質が強制的に85%に設定されます。

コード: 全て選択


if 
(isset($filename) && preg_match('/\.(?:png|jpg|gif)$/', $filename)) {
  $image = @ new Imagick("{$filepath}/{$filename}");
  if (!empty($image)) {
    while (true) {
      $width = $image->getImageWidth();
      $height = $image->getImageHeight();
      if (1280 < $width || 1024 < $height) {
        $image->minifyImage();
      }
      else {
        break;
      }
    }
    $image->setCompressionQuality(85);
    $image->writeImage();
  }
}
 
最後に編集したユーザー enogu on 2012年4月13日(金) 00:18 [ 編集 1 回目 ]
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月12日(木) 15:10

ありがとうございます。
サーバ会社に尋ねたところ、可能環境のようです。

> ImageMagickをご使用される際には、パスにつきましては以下となります。

おっしゃっている方式が使えるのだと理解致しました。
ご助力頂きましたソースのプラグインを作成しました。システムイベントタブの「OnFileManagerUpload」にチェックONしました。

それで投稿テストしたのですが、画像を選択する前に画像をアップロードしますよね。
900KB程度の画像なのですが、アップロードとちゅうで止まってしまい、肝心のチェックができない状況です。
php.iniファイルも、
upload_max_filesize = 100M
となっているのですが・・・

ということで困っておりますが、またご連絡させていただきます。
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by yama » 2012年4月12日(木) 23:08

コード: 全て選択

if(strpos(strtolower($filename),'.jpg')===false) return;
$width 150;
$src "{$filepath}/{$filename}";
list(
$img_w$img_h) = getimagesize($src);
$height $width * ($img_h $img_w);
$base imagecreatetruecolor($width$height);
$img imagecreatefromjpeg($src);
imagecopyresampled($base,$img,0,0,0,0,$width,$height,$img_w,$img_h);
imagejpeg($base,"{$filepath}/{$filename}",90);
imagedestroy($base);  

enoguさんのコードと比べるとすごい大雑把な処理ですけど。これは動きますか?
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月13日(金) 20:12

ご両名様、有難う御座います。

今、どちらも試してみたのですが、うまくいきませんでした。
Firefoxですが、プレビューさせて画像のみ表示さえてみたのですが、元画像の大きい画像として表示されました。
リサイズがされていないと判定できると思います。リサイズされてあれば、指定した左右250pxという小さい画像として
表示されるはずですので。

そもそも、当方がプラグインの使い方ができていないのかも知れません。

WordPressではプラグインをインストールするとか、インストールしたものを有効にするとか、
そして、プラグインの設定画面があるとかありますが、MODXはどうやらそのようなものはないようで、
実際にプラグインを作成したあとの使い方を何かしないといけないのでしょうか?

システムイベントはご指定通りチェックONもしたので、これをONにすることで
画像投稿時がこのシステムイベントの稼働時なのだろうと理解しており、投稿時に特段意識せずとも
勝手に本機能が稼働してくれるのだろうと想像しておりましたが、実は足らないとかでしょうか。

そういえば、二つ目のyama様のプラグインを作成したので、もしかして同じシステムイベント時に二つのプラグインが
稼働することになっているので競合しているとかあるのでしょうか。

無知で申し訳ありません。宜しくお願い致します。
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by yama » 2012年4月13日(金) 22:37

MODXの問題というより今回は私が手を抜いてるだけなので、、orz
競合はしませんが、二重に処理を行なうことになりますし、片方のプラグインに問題があればそこでエラーになると思います。私のも問題あるかもしれませんが
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月16日(月) 17:30

MODXの問題というより今回は私が手を抜いてるだけなので、、orz
競合はしませんが、二重に処理を行なうことになりますし、片方のプラグインに問題があればそこでエラーになると思います。私のも問題あるかもしれませんが


了解しました、ということで、今、yama様のプラグインだけを有効にして、再び試してみたのですが、投稿画像の上で右クリックして
「画像だけを表示」にしたところ、変わらずにリサイズされていない状態の画像がブラウザいっぱいに表示されました。変化無しのようです。


そもそも、当方がプラグインを使うようにしていないとかいうことはないでしょうか。
当方は以下のことをおこないました。

(1) いただいたソースをコピーした

(2) プラグイン作成画面で新規作成をし、ペーストした。

(3) プラグイン名を付けて、「システムイベント」の「Parser Service Events」の「OnFileManagerUpload」にチェックONした

(4) プラグインを有効にしたままで保存した

(5) テスト用に以前から作っていて非公開のリソースを編集した。
「あああああ」と羅列させただけの文章をにゅうりょくし、文章の先頭にカーソルを置いて、「画像の挿入/編集」ボタンをクリックして
「画像URL」から画像を呼び出し、該当する大き目の画像を選択し、「表示」タブに戻し、画像サイズを左右250pxに指定して
「左右余白」を20に指定して、「挿入」ボタンをクリックし、「保存」ボタンをクリックして投稿を完了させた

(6) 「プレビュー」をクリックしてページを見てみたが、画像はリサイズされておらず、単に大きい画像が左右250pxに縮小表示されていた


そもそも、プラグインを稼働させるには、ニュース用のテンプレートに対して何か記述を追加するなどがあるのでしょうか。

エラーの画面も出ませんし、何か当方が、MODXにおいてプラグインを稼働させるために必ず必要な「何か」を
単におこなっていないだけなんじゃないかと、嫌な予感を持っております(汗;
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by yama » 2012年4月16日(月) 19:09

手順は合ってると思います。私のコードはgetimagesize関数のあたりが怪しい気がするので、enoguさんのシンプルなコードを動かすようにするほうがたぶん近道ですね
アバター
enogu
メンバー
メンバー
記事: 32
登録日時: 2009年9月02日(水) 23:56

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by enogu » 2012年4月16日(月) 22:28

あれはシンプルと言っていいのでしょうか… リサイズの計算を面倒がってかなりアレゲなロジックに…

こちらでの動作環境は以下のとおりです

MODX Evolution 1.0.5J-r11
PHP Version 5.3.6-13ubuntu3.6
Apache/2.2.20 (Ubuntu)
imagick module version 3.0.1
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by yama » 2012年4月16日(月) 23:18

実用的な処理なのにシンプルっす。自分の書いたのは拡張子jpgしか見てないし小さい画像でもおかまいなしに処理するしw
自分の環境(xampp)はimagemagic入ってないみたいですね・・
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月18日(水) 15:52

ご両名様、有難う御座います。
yama様、そうですか、手順は間違ってなさそうということで了解しました。

くろいえのぐ様も有難う御座います。
貴殿が更新をされたソースの方で再び試してみました。
yama様のプラグインの方を無効にして、くろいえのぐ様のプラグインの方を編集後、プラグイン有効にしました。
結果は変わりませんでした。現象は変わらなくて、HTMLのソースのwidthを250pxにしているだけのようです。

ちなみに、前回、画像をアップロードしたら50%で止まってしまったことをお伝えしましたが、
画像自体はアップロードされていました。その後、その画像を使ってテストしている状況です。

当方の環境は以下です。実はなんか環境が不足しているとかあるのでしょうか。
MODX Evolution: 1.0.5J-r7
PHP: 5.3.6、5.2.8
MySQL: 5.0.90
httpd: Apache/1.3.41 Ben-SSL/1.60(Unix)
OS: FreeBSD 8.0
ImageMagickモジュール: 業者ヘルプに記載が無いようで、現在サーバ会社に確認中
↓ 4/19追加
ImageMagickモジュール: サーバA ImageMagick 6.6.1(本件テスト中のサーバ)、サーバB ImageMagick 6.2.0(こちらにも適用したいサイト有る)

これが成功したらHTML知識無い上役が自分で投稿できるようになるので、ますますMODXちゃんは企業サイトCMSとして賢い選択になりそうで、
自分としても成功させたい気持ちでおります。
お手数おかけして申し訳ないです。
最後に編集したユーザー epirock on 2012年4月19日(木) 11:30 [ 編集 2 回目 ]
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by yama » 2012年4月18日(水) 16:05

viewtopic.php?f=34&t=326
MODX本体でなくてもよければ、kcfinderプラグインにそんな設定があったような気もします。configファイルで動作を設定するのですが、画像サイズに関してはデフォルトでは値が0(制限なし)になってると思います
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月19日(木) 11:46

yama様、代替策、有難う御座います。是非試してみます。

http://code.google.com/p/modx-ja/downlo ... nder21.zip
最新のKCFinder for MODxです。多言語版(複数言語同梱版というのがホントは正しいのかな)としてリリースします。


こちらが新しいようなのでこちらで試してみます。またご一報入れさせて頂きます。
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月19日(木) 12:03

yama様、新しい方ということでバージョン21をダウンロードクリックしましたら、
This file has been deprecatedで、他のファイルの方がプロバブリーベターだとメッセージがありまして、
よく見ると、下にリンクでもうひとつ221というバージョンがあるようなので、こちらを使ってみますね。

またご一報入れさせていただきますので。
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月19日(木) 13:17

ver221をクリックしても同じメッセ―ジでダウンロードできませんでした。
よく見ると、下に以下の記述がありましたので、

http://code.google.com/p/modx-evo-extra ... r221r2.zip
New version is here.

またもうひとつ新しいバージョンの221r2を開いてダウンロード、でもこれもダメでした。
下に、
http://modxcms.com/forums/index.php/topic,50722.0.html
http://kcfinder.sunhater.com/
とあったので、どちらも開きましたがダウンロード先ではありませんでした。

もしかして、と思って、一番最初にあったリンクである古いバージョンの17だけはダウンロードできました。
結局、この古いバージョンであるVer17.zipということなんでしょうか。
これしか使えないので一応これを使ってみますね。

またご一報入れさせていただきます。
アバター
yama
管理人
記事: 3125
登録日時: 2009年7月29日(水) 02:50

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by yama » 2012年4月19日(木) 13:21

ほとんど個人的にしか使ってないので、よく分からなくなっちゃってますね。
https://github.com/yama/kcfinder/downloads
こっちかも?
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月19日(木) 14:28

追加でご案内いただきました、
https://github.com/yama/kcfinder/downloads
このURLからダウンロードしました。
pluginフォルダ直下のkcfinderフォルダをまるごとアップしました。
解凍したフォルダの最上階に、kcfinder.tplがあったので、それを開いてコピーしてプラグインにペーストしたところ、
勝手にプラグイン名、説明、そしてイベントのチェックONがなされますが、イベントのチェックONが御推挙されていました
OnDocFormPrerender
に入っておらず、その代わりに、
OnDocFormRender
にチェックONされていました。でも、kcfinder.tplの記述で、冒頭の@eventにちゃんと
OnDocFormRender
となっているので、バージョンアップで変更されたのだと理解してこのままいきました。

そしてリソース作成を開いたら、リストメニューのデフォルトがTinyMCEになっているので、KCfinderを選択しようとクリックしましたが、
出て来ませんでした。今まで通り、他の候補は「なし」しかありませんでした。
何か私の設置方法にモンダイがありそうな・・・・
ちなみに、
今試しているサイトがあるサーバの方のMDOXは、1.0.5J-r7 です。
二つ目に試したいサイトのあるサーバのMDOXは、1.0.5J-r3 です。
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月19日(木) 17:35

くろいえのぐ様、以下の変更分で試してみました。

追記(2012-04-13): 軽くバグを取ってきました。jpeg、png、gifでアップロードが機能するはずです。注:このバージョンでは圧縮率を向上させるため、jpeg画像の品質が強制的に85%に設定されます。


しかし、なんでなのかなぁ・・・うんともすんとも言わず、何も変わらないのです。。
imageMagickも使えるそうですし・・・
どなたの何を試しても変わった様子が無いというのは、もっと根本的な原因でしょうか・・・
アバター
enogu
メンバー
メンバー
記事: 32
登録日時: 2009年9月02日(水) 23:56

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by enogu » 2012年4月21日(土) 00:27

ImageMagickのバージョンですが、6.6.xというのはImageMagick本体のバージョンかと思います。
例のスクリプトではPECL:imagickというPHP上で動くラッパーを使用しているため、こちらのインストールも必要です。

http://pecl.php.net/package/imagick

こちらのバージョンは、レポート > システム情報 > phpinfo() > ここをクリック のページからチェックできます。
epirock
メンバー
メンバー
記事: 48
登録日時: 2012年2月13日(月) 13:04

Re: 昨今の高画質デジカメ撮影画像の記事へのアップロードを自動リサイズで!

投稿記事by epirock » 2012年4月26日(木) 10:06

くろいえのぐ様、いつも有難う御座います。

phpinfoを見ました。imagickや、imageMagickでページ検索したのですが出ませんでした。
ということは、おっしゃっておられるラッパーは、このサーバにはインストルされておらず、本機能を使える状態にない、ということでしょうか?
最初にご案内いただいたソースというのは、そもそもがサーバによって使えるか使えないかわからない手法だったということなんでしょうかね?
ちょっと混乱しており、事態が把握できずにおります(汗;

ちなみに、PECLでページ内検索をしてみますと、pdo_sqliteと、SQLiteという項目で引っ掛かりましたが、これは関係ないですよね?