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

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

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

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

Q&A

解決済

2回答

4954閲覧

imagejpeg関数のquality(圧縮値)

ERINGI5

総合スコア20

PHP

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

0グッド

0クリップ

投稿2016/03/25 07:08

PHPでアップロードしたJPEG画像をimagerotateした後にimagejpegしているのですが
imagejpegの第3引数の値を決めれないでいます....

できる限りアップロードした画像のサイズ(容量)と同等な状態で出力したいのですが
そのような指定はできないのでしょうか?
または、ベストなqualityはどのように算出すればいいでしょうか?
ご教授お願いいたします。

テキトーな画像でサイズが変わらないqualityを調べてみたのですが以下の結果となりました。
qualityが90以降では見た目に影響はでないとどこかのサイトで書かれておりましたが.....

##106,314byteの画像

quality圧縮後
97114,809
96101,654
9591,938

##64,712byteの画像

quality圧縮後
95127,548
9084,951
8566,812
8464,896
8363,028

##235,734byteの画像

quality圧縮後
95445,991
90320,735
85259,654
83245,223
82236,743
81230,756

##228,421byteの画像

quality圧縮後
95316,441
92235,979
91224,856
90212,414
85164,018

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

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

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

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

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

guest

回答2

0

不可逆圧縮の JPEG だと、今使われている正確な圧縮時のパラメータを知る方法は無かったように思います。また、EXIF など外部のメモ情報として品質パラメータが付与されていたとしても、その内容が必ずしも正しい保証もありませんし、正しかったとして、圧縮に使用した画像ライブラリに特化した圧縮パラメータであるために、自分達の処理系において意図した値ではないことも十分考えられます。

そのため、元の画像を何度か保存し直して近いサイズになったものから保存時の品質パラメータを推測する。というのが実現可能な方法だと思われます。無駄に負荷がかかるのは間違いないので、規模によっては躊躇してしまう方法ですが、システムに対して初回の画像登録時に品質パラメータを推測して、画像と紐付ける処理にしておけば、毎回計算する必要も無くなりますので、その流れにしてしまえば、なんとかなりそうにも思います。

しかし、登録時点でシステム固有の品質変換と縦横のサイズが大きすぎる場合のリサイズを行い、以後全てその設定で扱う。というような仕様にしておく方が無駄に巨大なファイルを投げられた時に、トラブルを避けられるため、その方が一般的な仕様だと思いますが『元の品質を維持した上での加工』が重要な要件であれば、上記に挙げた方法も適用できるかもしれません。

以上、ご参考になれば幸いです。

投稿2016/03/25 23:50

ps13zier

総合スコア433

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

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

ERINGI5

2016/03/28 01:47

ご回答ありがとうございます。 画像関連の知識が乏しくいろいろご教授いただき大変助かります。 ご教授いただいた内容で対応可能そうですね。 (負荷に関しても問題なさそうです。)
guest

0

ベストアンサー

画像そのものを回転する訳ですので元画像と同じ画像ではなくなりますから、同じ容量にはならないのは理解いただけるかと思います。
(同じくらいにはなるはずですが)

どういう理由で回転させたいのかがわからないのでなんとも言えませんが、一つの案として容量を変更したくないのでしたら回転方向だけ決め、PHPではそのまま書き出してCSSでrotateさせてはいかがでしょうか?

投稿2016/03/25 17:22

landy77

総合スコア1614

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

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

ERINGI5

2016/03/28 01:52

ご返事が遅くなって申し訳ありません。 ご回答ありがとうございます。 おっしゃる通りcssでrotateしてあげれば画像劣化も気にせず対応できそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問