web-dev-qa-db-ja.com

20 GBのサイズ変更された画像を削除するにはどうすればいいですか?

元の画像を残したまま、サイズ変更した画像をすべて削除します。未使用のデータが20 GB以上あるため、サーバーの空き容量が不足しています。例えば:

  • first-image-name.jpg
  • ファーストイメージ名-72x72.jpg
  • ファーストイメージ名-150x150.jpg
  • ファーストイメージ名-250x250.jpg
  • ファーストイメージ名300x300.jpg
  • ファーストイメージ名-400x400.jpg
  • ファーストイメージ名-1024x1024.jpg
  • second-image-name.jpg
  • セカンドイメージ名-72x72.jpg
  • セカンドイメージ名-150x150.jpg
  • セカンドイメージ名-250x250.jpg
  • セカンドイメージ名300x300.jpg
  • セカンドイメージ名-400x400.jpg
  • セカンドイメージ名-1024x1024.jpg

将来、サイズ変更されたすべての画像を削除してそのような画像の作成を無効にする方法はありますか?

4
Mohamed Gamal

回答の大部分は、将来のデフォルトの画像サイズの作成を停止する方法について説明しましたが、これはテーマのカスタムサイズの作成を考慮していませんが、functions.phpに追加する別のソリューションを次に示します。

function wpse_240765_unset_images( $sizes ){
    unset( $sizes[ 'thumbnail' ]);
    unset( $sizes[ 'medium' ]);
    unset( $sizes[ 'medium_large' ] );
    unset( $sizes[ 'large' ]);
    unset( $sizes[ 'full' ] );
    return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'wpse_240765_unset_images' );

また、画像をゼロに設定して、将来のデフォルトの画像生成をオフにすることもできます。

enter image description here

しかし、オリジナル以外の画像を削除するために、それをしないように設定するのを忘れたときに同じ問題に遭遇しました。

  • SFTPサービスを使用してすべての写真をローカルにダウンロードします。 送信 (有料)が大好きですが、 Filezilla (無料)のようなものを使用できます。

  • すべてのファイルをディレクトリにダウンロードします。

私はMacを使用していますが、bashを許可する端末であれば動作します。単純なbashスクリプトをコーディングしました。

# !/bin/bash

USERNAME=vader
DIRECTORY="/Users/$USERNAME/desktop/question240765"
for imageWithSize in $(find "$DIRECTORY" -type f -regex '.*/[a-z-]*-[0-9].*.txt$'); do
    cd $DIRECTORY
    echo rm $imageWithSize
done

このフォルダーはデスクトップ上にあり、質問のためにquestion240765という名前を付けました。これをテストするために.txtファイルを使用しましたが、.jpgに変更できます。それをbashファイルimage_dust.shとして保存したので、後で修正したり強化したりすることができます。最初にechoを指定してスクリプトを実行すると、行を変更してファイルにダンプすることもできます。

echo rm $imageWithSize 

に:

echo rm $imageWithSize >> result.txt

これにより、すべてのファイルがresult.txtファイルに記録され、実際に削除する前に参照できます。すべてがうまくいけば、その行を次のように変更します。

rm $imageWithSize

ここで興味がある場合は、正規表現が何をするかです:

  • [a-z-]*は、foo-barfo-fo-barなどのファイル名を探します。名前に大文字が含まれている場合は、[A-Za-z-]*を使用します
  • -[0-9]ファイル名の後、残りの-(ダッシュ)と番号[0-9]を探します
  • .*.txtは、拡張子の付いた名前の最初の数字以降を探します。

スクリプトを作成して実行した後。サイト上のすべてを吹き飛ばして、画像を再アップロードできます。ファイルサイズが心配な場合は、imagemagickを使用しますが、sipsを使用して画像の圧縮サイズを小さくします。

コーディングがあなたの最強のポイントではない場合、プラグインソリューションを見たいかもしれません。

私が念頭に置いているのは、WordPressリポジトリにあるいくつかの無料プラグインの提案です。

私はまだ最初のものを使用していないことを認めなければなりません- Media Cleaner -したがって、私はあなたに確固たる意見を提供することはできません。

私は2番目のものを使用しました- 画像のサイズ変更を最適化 -期待した結果が得られました.

どんな場合でも常に探すべきポイント:

何かを試みる前に、

  • 完全に作成することの重要性を十分に伸ばすことができません WordPressインストールのバックアップ (アップロードフォルダーとdBの両方)
    20GBについて話していることは理解していますが、特にこのユニークな状況では、バックアップが不可欠です。

  • この手順は時間がかかり、サーバーに負荷がかかります。
    サイトをメンテナンスモードにするのが賢明です。

  • 孤立した添付ファイルを削除する

すべて完了したらお気に入りを使用してください サムネイルを再生成 プラグインを使用して、WordPress /テーマの画像サイズを元に戻し、インストールします- EWWW Image Optimizer および Imsanity 。この組み合わせにより、最適化、サイズ変更、必要な画像のみが保証されます。


プラグイン固有のポイント。

メディアクリーナー

  • 未使用として検出されたファイルは特定のダッシュボードに追加され、そこでゴミ箱に入れることができます。プラグイン内部のゴミ箱に移動します。さらにテストした後、間違いなくゴミ箱に入れることができます」。
  • 一部のプラグインはそれと衝突する可能性があります。それが発生し、メンテナンスモードになっていると思われる場合は、すべてを無効にしてクリーニングを行ってください。

画像のサイズ変更の最適化

  • プラグインをアクティブにする前に生成された画像サイズを削除するには、設定->メディアにアクセスし、「画像サイズの削除」の下のボタンを使用してクリーンアップを実行します)。
  • このサポートスレッドを読む: 既存の画像の処理に関する緊急の質問

サムネイルクリーナー

  • 次のような機能が含まれます:アップロードのバックアップの作成、アップロードディレクトリの分析、元のファイルとサムネイルの数の概要の表示、削除するはずのないファイルを紛失した場合のバックアップの復元。
  • このサポートスレッドをお読みください: 元の画像のみをバックアップ

最良の結果を達成した方法をお知らせください。

1
marikamitsos

余分な画像ファイルをすべて削除するには、すべての投稿をループ処理し、それらの投稿への添付ファイルを見つけ、不要になった添付画像サイズを確認してそれらのファイルを削除する必要があります。さあ。

まず、 (カスタム)投稿とページをすべて取得します およびそれらをループ処理します。

$the_query = new WP_Query (array ('posts_per_page' => -1, 'post_type' => 'any'));
foreach ($all_posts as $post) { ... }

$postの次は すべての添付画像を取得する および すべてのメディアサイズの一覧を取得する 。それからそれらをループします。

$images = get_attached_media ('image',$post); // returns array of post objects
$sizes = get_intermediate_image_sizes(); // returns array of identifying strings
foreach ($images as $image) {
  foreach ($sizes as $size) {
    ...
    }
  }

今、この画像とサイズのために、 URLを見つける そして ファイルを削除する

$att = wp_get_attachment_image_src ($image->ID,$size); returns array of file properties
wp_delete_file ($att['url']);

私はそれを適用する前にこのコードを徹底的なテストをしたいと思います...画像内の20GBの場合、実行にもしばらく時間がかかる可能性があります。

1
cjbj

わかりません、既存の画像を削除する方法。しかし、アップロードしようとしている新しい画像の画像サイズの生成をやめることはできます。

あなたがコードを書きたいのなら: あなたのテーマのfunctions.phpファイルにこのコードスニペットを置いてください -

add_filter( 'intermediate_image_sizes_advanced', 'wpse_240765_image_sizes' );

function wpse_240765_image_sizes( $sizes ){
    $sizes = array();
    return $sizes;
}

またはプラグイン付き: このプラグインを使用する - https://wordpress.org/plugins/image-sizes/ /

それはあなたに同じ出力を与えるでしょう。どの画像サイズを作成しないようにするかを選択することもできます。 enter image description here 

1
mukto90

SSHアクセスがある場合は、以下のコマンドを実行してサイズ変更されたイメージを一覧表示したり削除したりできます。後でそれらを再構築することができます。

すべてのサイズ変更された画像を一覧表示します。

# List all resized images.
# Usage: lrimg site.ext
function lrimg() {
  clear
  THE_PWD=$PWD
  cd ~
  cd /var/www/"$1"/htdocs/wp-content/uploads/
  find . -regextype posix-extended -regex ".*-[[:digit:]]{1,9}x[[:digit:]]{1,9}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f
  cd $THE_PWD
}

サイズ変更した画像をすべて削除します。

# Remove all resized images.
# Usage: lrimgrm site.ext
function lrimgrm() {
  clear
  THE_PWD=$PWD
  cd ~
  cd /var/www/"$1"/htdocs/wp-content/uploads/
  find . -regextype posix-extended -regex ".*-[[:digit:]]{1,9}x[[:digit:]]{1,9}(@2x)?.(jpg|jpeg|png|eps|gif)" -type f -exec rm {}  \;
  cd $THE_PWD
}

ここに注意してください。バックアップの準備をしてください。

P.S私のサーバーはNGINXセットアップをしているので、サイトパスはサイト名であるパラメータである/var/www/"$1"/htdocs/ $ 1です。パスに合わせて修正することができます。

1
Ahmad Awais

流れるステップはそれをするべきです:

1)関連ファイルから不要な画像サイズを削除することから始めます。関数。テーマ内のPHP、および存在する場合はすべてのプラグイン(たとえば、ラダーレス)。

2)次に、あなたはFTPですべての必要な画像サイズを削除することができます。

3)それからあなたはサムネイルを再生成する必要があります(例えばWordpressが作成するように言われているすべての画像サイズ)。あなたはWPリポジトリから任意の 'サムネイルの再生'プラグインを使うことができます。

代わりにこれを試してください:1)上記のステップ1と同じ

2)プラグインディレクトリ(repo)には、すべてのWPサムを削除し、Webサイトの特定のページで初めて呼び出されたときにのみサムを生成するプラグインがいくつかあります。その後のイメージ要求では、そのイメージは既に存在しており、通常どおりに機能します。これの利点は、親指があなたのサイトで実際に必要とされるイメージ/サイズのためにだけ作成されるということです。ただし、標準以外の方法で呼び出されたイメージは生成されない可能性があります。

あなたが過度に大きいオリジナル画像から追加のオーバーヘッドを減らしたいならば、あなたが選んだサイズまでこれらのオリジナルの物理的なファイルサイズを減らすために 'imsanity'プラグインを使うことができます。ユーザーが投稿した画像を含むサイトに最適なツールです。

0
Phill Healey

1)WordPressが画像のアップロード時に複数の画像サイズを作成しないようにするには、プラグインを使用せずにこれを達成できます。

管理セクションの 設定 > メディア に移動します。

サイズを 0 に設定すると、WordPressがデフォルトの画像サイズを作成できなくなり、元の画像のみが保存されます。

enter image description here 

2)あなたがあなたのサイトに持っている20GBの画像を減らすために、私はあなたのサーバーに単にSFTPしてそして手動で異なるサイズの画像を削除するでしょう。 WordPressインストールのルートディレクトリからwp-content/uploads/<yyyy>/<mm>/に移動すると、あなたのすべての画像とメディアのアップロードが見つかります。必ず元の画像をそのまま使用するか、または単に画像全体を削除してください。追加の- ###x###.jpgが付いた画像ファイル名はすべて自動生成された画像です。元のイメージはファイル名にこれを含まないでしょう。

さておき - あなたの画像を手助けするために、WPMU DEVのWP-Smushプラグインをチェックする。

WP-Smush - 画像最適化

それは本当に素晴らしいです、そしてあなたが画像をアップロードするときそれは保存する前に画像を自動的に圧縮し圧縮するためにそれらのサーバーを使います。また、大きな解像度の画像を妥当な最大サイズに縮小することもできます。あなたは本当に2048×2048より大きい画像を表示する必要はないはずです。

0
italiansoda