web-dev-qa-db-ja.com

JPEGをアップロードする場合、WordPressは元の画像を圧縮しますか?

私は自分の画像処理ワークフローがどのようになるべきかを判断しようとしています。 WordPressはアップロード時に自動的に画像をさまざまなサイズにサイズ変更して圧縮します。元の画像を圧縮するのであれば、私は興味があります。

小さい画像では圧縮されるので(必要に応じて)、小さいサイズで再圧縮するためにすでに圧縮されているJPEGをアップロードしたくありません。しかし、それがオリジナルを圧縮しないならば、私は誰かがオリジナルを見に行くとき必要以上に大きい画像ファイルを持っているでしょう。

私は理想的なワークフローはWordPressに高品質の100 JPEGをアップロードし、フル品質の画像を使用してすべての小さい画像をリサイズして圧縮してからオリジナルも圧縮することだと私は考えています。これが可能であるかどうか誰かが知っていますか(またはこれが既に行われていることである場合)。

2
Dominic P

wp_handle_uploadwp-admin/includes/file.php関数のソースコードを読むことで得られるのはこれだけです。

  • WordPressは元のアップロードファイルを保存します(通常) - 下記を参照してください...
  • ソースがJPEGの場合、WordPressはサイズ変更された画像にJPEG圧縮を適用しません。
  • デフォルトのJPEG圧縮レベルは90です。
  • jpeg_qualityフィルタを追加することでJPEG圧縮レベルを調整できます。

    add_filter('jpeg_quality', 'ex46632_jpeg_quality');
    function ex46632_jpeg_quality($quality) {
        $quality = 95; // An example of setting the quality to a higher value.
        return $quality;
    }
    
  • Max Widthフィルタを追加することで、アップロードされた画像をMax Heightで指定されたSettings > Media > Large size/wp_upload_resizeに強制的にサイズ変更することができます。

    add_filter('wp_upload_resize', 'ex46632_upload_resize');
    function ex46632_upload_resize($resize) {
        $resize = true; // Force resizing to the max sizes.
        return $resize;
    }
    
    • サイズ変更された画像の作成にエラーがある場合は、代わりに元のアップロードファイルが保持されます。
    • サイズ変更が成功すると、最初にアップロードされたメディアは破棄されます。

ここのコードサンプルはテストされていないので参考用です。

Updatewp_handle_upload関数でのサイズ変更の処理に変更が加えられました。この変更によりバグが修正され、サイズ変更コードが実際に削除されたため、画像はアップロード時にサイズ変更されず、元のサイズに維持されます。参考のために 明示的なコード変更 そして バグチケット 。この変更はまだ「3.4へのレビュー待ち」であり、まだリリースされていないことに注意してください。

チケット には "アップロード前に画像のサイズを変更させる"というコメントがありますので、Pluploadが含まれているので、画像のサイズ変更を確認する別の場所があるかもしれません。

5
Dean Taylor