質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

2回答

3142閲覧

mozjpegを利用して自サーバー(wordpress内)で画像圧縮を行いたい

退会済みユーザー

退会済みユーザー

総合スコア0

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2016/04/26 05:12

お世話になります。

現在VPSを用いてWordPress環境を運用しています。

今まで画像圧縮にはプラグイン(EWWW Image Optimizer有料版等)を利用していました。

有料版では通常よりも高品質で圧縮効率が良いので非常に助かっていたのですが、このプラグインはクラウドを利用しているため、圧縮完了するのにかなりの時間がかかってしまいます。

そのため自サーバーで効率の良い圧縮環境を実現しようと思ったのですが、mozjpeg(https://github.com/mozilla/mozjpeg/releases/tag/v3.1)がそれを実現出来るようなので導入するに至りました。

圧縮にはmozjpeg内にあるcjpegを使っていますが、思ったように動作しなくて困っています。

考えではWordPress内でアップロード時にcjpegを利用して元ファイルを上書きする形です。

以下は試した例です。

functions.php

php

1// 画像アップロード時に圧縮 2function moz_compress( $file ) { 3 4 // タイプ指定 5 if ( $file['type'] == 'image/jpeg' OR $file['type'] == 'image/png') { 6 7 // 画像の情報を取得 8 $image = wp_get_image_editor( $file['file'] ); 9 10 $path = wp_get_image_editor( $file['file'] ); 11 12 // エラーが無い場合 13 if ( ! is_wp_error( $image ) ){ 14 15 // 最大画像サイズを指定 16 $max_width = 1024; 17 $max_height = 1024; 18 $size = $image->get_size(); 19 $width = $size['width']; 20 $height = $size['height']; 21 22 // 指定サイズを超えた場合 23 if ($width > $max_width || $height > $max_height) { 24 $image->resize($max_width, $max_height, false); 25 } 26 27 // 画像を一時保存 28 $image->save($file['file']); 29 30 // 画像をcjpegで圧縮(動作せず) 31 $output = shell_exec("mozcjpeg -quality 70 '$path' > '$path' "); 32 echo "<pre>$output</pre>"; 33 34 } 35 36 } 37 38 return $file; 39 40} 41add_action( 'wp_handle_upload', 'moz_compress' );

他の所は一応動作しているのですが、
以下の部分が上手く動作せず、ファイルの上書きが出来ていません(元ファイルがアップロードされているのみ)。

php

1... 2$output = shell_exec("mozcjpeg -quality 70 '$path' > '$path' "); 3echo "<pre>$output</pre>"; 4...

実現したい事
・アップロードした元ファイルをcjpegで圧縮。
・アップロード時に自動作成されるファイル(サムネイル等)もcjpegで圧縮。

少し長くなりましたが、ご教授願います。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

php

1$output = shell_exec("mozcjpeg -quality 70 '$path' > '$path' ");

echoを削除すればエラーが出ることなく実行出来ました。

投稿2016/04/29 05:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

変換で実行するファイル名がmozcjpegとなっていますが、cjpegの間違いではないですか?
私の方でmozjpegをソースコードからコンパイルしてみましたが、mozcjpegは作成されませんでした。

※もし、都合上実行ファイルの名前を変更しているのであれば、この回答は無視してください。

投稿2016/04/26 14:24

yukkeorg

総合スコア985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問