ユーザーが画像をアップロードできるサイトがあります。これらの画像を直接処理し、CodeIgniterImageManipulationクラスを使用して5つの追加形式にサイズ変更します。私はこれを次のように非常に効率的に行います:
- 元の形式ではなく、常に以前の形式からサイズ変更します
- jpegのファイルサイズの約半分である90%の画質を使用してサイズを変更します
私が尋ねた別の質問から得たアドバイスの後に私が実行したことを行う上記の方法。私のテストケースは、RGBモードの1.6MB JPEGで、高解像度は3872 x 2592です。境界のケースの一種であるその画像の場合、サイズ変更プロセスは合計で約2秒かかります。これは私には許容できます。
現在、残っている課題は1つだけです。その90%の品質を使用して、サイズを変更せずに元のファイルを圧縮したいと思います。そのファイルもファイルサイズの半分を占めるという考えです。単純に現在のサイズにサイズ変更できると思いましたが、ファイルやサイズには何の影響も及ぼさないようです。これが私のコードですが、少し簡略化されています。
$sourceimage = "test.jpg";
$resize_settings['image_library'] = 'gd2';
$resize_settings['source_image'] = $sourceimage;
$resize_settings['maintain_ratio'] = false;
$resize_settings['quality'] = '90%';
$this->load->library('image_lib', $resize_settings);
$resize_settings['width'] = $imagefile['width'];
$resize_settings['height'] = $imagefile['height'];
$resize_settings['new_image'] = $filename;
$this->image_lib->initialize($resize_settings);
$this->image_lib->resize();
上記のコードは、元のコードを除くすべての形式で正常に機能します。CIクラスにデバッグして、何も起こらない理由を確認しようとしましたが、ディメンションが変更されていないことをスクリプトが検出していることに気付きました。次に、ファイルをまったく処理せずに、そのファイルのコピーを作成するだけです。そのコードにコメントを付けて、サイズを強制的に変更しましたが、それでも何も起こりません。
寸法を変更せずにCIクラスを使用して画像(jpegだけでなく任意の画像)を90%に圧縮する方法を知っている人はいますか?