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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

6878閲覧

縦横のサイズは変更せずに画像ファイルサイズの縮小をしたい

taiyo-2017

総合スコア49

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/07/16 01:56

cakephp3を使用して、
画像のアップロードができて、アップロードしたファイルを閲覧することのできるシステムを作成しています。

そのシステムの中で縦横のpxは変更せずに画像ファイルサイズの縮小をしたいです。
実装イメージは
500KBを超えた画像がアップロードされた際に
自動で画像の解像度を下げることでファイルサイズを500KB以下まで小さくした状態にする
という動きを想定しています。
閲覧時には画像は500KB以下に圧縮された状態のまま表示されるようにしたいです。

自分なりに検索もしてみましたが、
画像の縦横のサイズも小さくしてファイルサイズを小さくするようなプラグインや
解像度を下げるようなプラグインは見かけましたが、
解像度を下げるかつ一定のファイルサイズ以下にする、ということができるプラグインを探すことができませんでした。

上記を実装するため
JavaScript、jQueryやphpで使用することのできるプラグイン等があれば教えていただきたいです。
知恵を貸していただければと思います。よろしくお願いいたします。

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

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

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

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

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

taiyo-2017

2019/07/16 06:18

縦横のサイズはそのままに、画質を下げる、という意味合いのつもりでした。 うまく伝えられていなければすみません…。
guest

回答2

0

そのシステムの中で縦横のpxは変更せずに画像ファイルサイズの縮小をしたいです。

原理的に困難です。ラスタ画像(PNG、JPEGなど)の容量はピクセル数に比例しますので、「ピクセル数を変えずに容量を一定以下まで下げる」となればJPEGで画質を極端に落とすぐらいしか手段がなく、実用性がありません。

投稿2019/07/16 02:02

maisumakun

総合スコア145184

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

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

taiyo-2017

2019/07/16 04:46

実用性がないところまで画質が落ちてしまうものなのですね… イメージとしては https://www.iloveimg.com/ja の「画像の圧縮」で行うことのできる圧縮を組み込みたいと考えております。 ここで質問するのもおかしいかもしれませんが、 上記のサイトのようにある程度の解像度を持たせつつ圧縮することはプラグイン等の組み込みなどでは行えないのでしょうか?
maisumakun

2019/07/16 05:24

「ある程度の解像度を持たせつつ圧縮することは」可能ですが、容量制限を厳守しなければならないというのであれば難しいです。
taiyo-2017

2019/07/16 06:07

容量制限を厳守、とまではいかずともある程度圧縮ができるのであれば方法を知りたいなと思っています。 アドバイスいただければ幸いです。
guest

0

ベストアンサー

画像のクオリティを下げれば不可能ではないですが
下げたあと500kb以下になるとは限りませんので
UIとしてユーザーに%指定させて圧縮し、それでもだめならエラーを返すというくらいが妥当。
自動でなんどもサーバー側で圧縮比率を変えながら処理するのは
負荷が高く効率的ではないのでやめたほうがいい

3段階くらいでトライアンドエラー処理するくらいならなんとかなりますが
低クオリティにしたときにクライアントがそれをよいとジャッジするかわからないので
圧縮率はクライアントが決めるべき

追記

imgjpegで出力したサイズを知りたいならバッファリングしてstrlenをすればよいです

PHP

1<?PHP 2$im = @imagecreatefromjpeg('1.jpg'); 3 4ob_start(); 5imagejpeg($im,null,100); 6$content=ob_get_contents(); 7ob_end_clean(); 8print "100:".strlen($content)."<br>"; 9 10ob_start(); 11imagejpeg($im,null,75); 12$content=ob_get_contents(); 13ob_end_clean(); 14print "75:".strlen($content)."<br>"; 15 16ob_start(); 17imagejpeg($im,null,50); 18$content=ob_get_contents(); 19ob_end_clean(); 20print "50:".strlen($content)."<br>"; 21 22ob_start(); 23imagejpeg($im,null,25); 24$content=ob_get_contents(); 25ob_end_clean(); 26print "25:".strlen($content)."<br>"; 27 28ob_start(); 29imagejpeg($im,null,0); 30$content=ob_get_contents(); 31ob_end_clean(); 32print "0:".strlen($content)."<br>"; 33 34 35/* 36header('Content-Type: image/jpeg'); 37print $content; 38*/

投稿2019/07/16 02:22

編集2019/07/17 02:36
yambejp

総合スコア114839

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

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

taiyo-2017

2019/07/16 04:53

画像ファイルサイズとしては「1MB~2MB」のものを500KB以下に圧縮したいと考えております。 画質が悪くなり、低クオリティになることはシステム利用者は承知している状態です。 500KB以下とまではいかずとも解像度を下げてファイルサイズを小さくするオススメの方法はありますでしょうか?
taiyo-2017

2019/07/17 02:19 編集

回答ありがとうございます。 GDで実装していたのですが、少し分からないことがありました。 imagecreatefromjpeg()で画像を再作成?することはできたのですが、 プログラムでimagejpeg()でサイズを小さくした画像の情報(ファイルサイズ等)を見ることはできないのでしょうか? 戻り値がboolのため、どれだけのサイズになったのかを確認することはできないのでしょうか?
Q71

2019/07/17 02:24

あなたが「小さく」したいのは、メモリ上のサイズですか。それともファイルサイズですか。 メモリサイズなら、画像を小さくする(要望から外れる)か、色数を少なくします。ファイルサイズなら、ファイルに書き出さないと、サイズはわかりません。
taiyo-2017

2019/07/17 02:30

回答ありがとうございます。ファイルサイズのつもりでした。 では、ファイルを一時的に書き出して、そのファイルを読み込むことで縮小したファイルサイズを取得することができるのですね。
yambejp

2019/07/17 02:37

ファイルサイズのとり方は追記しておきました。
taiyo-2017

2019/07/17 07:06

ファイルサイズの取得方法の追記ありがとうございます! 圧縮率ごとに確認することができました。 「ファイルサイズを500KB以下に圧縮」という箇所は 現在も、どう解決しようか、というところですが、 jpegやpng形式の画質の変更などを学ぶことができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問