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

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

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

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

Phalcon

Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

Q&A

解決済

1回答

5595閲覧

pngの圧縮

ERINGI5

総合スコア20

PHP

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

Phalcon

Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

0グッド

2クリップ

投稿2016/03/23 13:33

#png画像が圧縮されない
JPEGとPNGの画像を圧縮しようとしているのですがJPEGはうまく圧縮されるのに
PNGは全く圧縮されません。

試している画像がいけないのか!?
実装方法がいけないのか!?
そもそもPNG画像って圧縮できないものなのか!?
(可逆圧縮だと圧縮できない!?そのような記述も見た気もしますがいまいち理解できてません。)

##開発環境
php:5.5.24
phalcon:1.3.4

##JPEG
imagerotateなどの処理もあり、imagejpegの第3引数にて圧縮値を設定しています。

##PNG
JPEG同様にimagepngを用いて圧縮をしてみたのですが思うように圧縮されませんでした。

imagepng($image, $fileName,1);

第3引数の値をNULL〜最大値(9)まで試してた結果がいかになります。

圧縮値圧縮前(byte)圧縮後(byte)圧縮率
NULL336,996342,4031.01604
0336,9961,689,3455.01295
1336,996424,9101.26088
2336,996412,5481.22419
3336,996393,6631.16815
4336,996361,0571.0714
5336,996352,6351.04641
6336,996342,4031.01604
7336,996337,3111.00093
8336,996327,8440.97284
9336,996323,6920.96052

###疑問点
・今回のケースではなぜ全く圧縮されないのでしょうか?
・pngの圧縮はどのように実装すればいいでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

的はずれな点もあるかもしれませんので、ご参考程度に眺めてください…

  • まず、imagejpegimagepng の圧縮結果を単純比較することは出来ないようです。

imagepng()のqualityのデフォルト値
以下、要点を抜粋

imagepng()の第3引数のqualityとimagejpeg()の第3引数のqualityは全然違う
第3引数に指定する値の単位が違う。
そしてそれより問題なのは値の大小が逆ということ。
imagejpeg()は0が最大の圧縮率なのに対してimagepng()は0は無圧縮となっている。

  • PNG と JPEG は、そもそも画像の形式が全く異なります。

ミケネコ研究所 > わかりやすい PNG の話 for Web > 第 3 章 PNG のスペック一覧 > 3.3 圧縮

PNG 画像は、可逆圧縮です。JPEG のような非可逆圧縮はあり得ません。

  • PNGの圧縮テストに使用した画像はどのように作成されたものでしょうか?

既に、ある程度圧縮済みということはありませんか??
たとえば、まだ圧縮の余地があるかどうかを確認するには、オンラインサービスを利用してみるのも一案です。
PNG画像を圧縮するならオンラインWebツールのOptimizillaがおすすめ

  • PHPで実装する際に参考になりそうな情報について

どんな実装方法が最適なのか分かりませんが、以下のようなページを参考にしてみてはいかがでしょうか。
MAMPでzopfliを使ってpng画像を圧縮してみた。
画像ファイルを指定容量ぎりぎりに圧縮する
ImageMagickとPHPで、画像サイズを変更する

投稿2016/03/23 22:01

pi-chan

総合スコア5936

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

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

ERINGI5

2016/03/24 03:00

回答ありがとうございます。 ご指摘いただきました圧縮テストに使用している画像が原因でした。 pngの画像がなかったのでjpegの画像を下記サイトでpngに変換してテストしておりました。 [画像加工編集サイト](http://www.bannerkoubou.com/photoeditor/conversion) 正常なpng画像でテストしてみところ圧縮率:0.78まで落とせる事が確認できました。 しかし、教えていただいたOptimizillaの圧縮率すごいですね。 画像の圧縮は、プログラムではなくこうゆうサイトで圧縮してから使用する方がよさそうですね。(zopfilは、今後勉強してみます.........)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問