wake-up-neo.com

Größe aller Bilder ändern

Ich habe gerade das Thema in meinem Blog geändert und aufgrund der geringen Seitenbreite wird das Layout geändert. Die meisten meiner früheren Bilder (angehängt in Posts) sind ungefähr 600px breit, und jetzt muss ich sie alle proportional auf 450px skalieren. Wie ändere ich die Größe aller Bilder auf einmal? Gibt es ein Plugin dafür?

PS: Das Schreiben einer CSS-Regel ist eine gute Option, und das habe ich bereits getan. Aber ich denke, die Bildgröße zu ändern würde auch den Download-Aufwand für jede Seite verringern!

4
GPX

Ich habe eine ähnliche, aber umfassendere Frage gestellt, und ich muss noch nachforschen und eine vollständige Antwort schreiben. In der Zwischenzeit sind hier einige Hinweise, die Ihnen helfen könnten:

Ich habe eine Reihe von Plugins geschrieben, die alle Bilder auf die im Editor verwendete Größe skalieren . Es funktioniert, indem <img src="image.jpg" width="200" height="400"/> in <img src="image-200x400.jpg" width="200" height="400"/> konvertiert wird ( Größe der img-Tags ändern ) und diese fehlenden Zwischengrößen auf Anfrage abgefangen und generiert werden ( On-Demand Resizer ). Sie sollten in der Lage sein, den ersten Teil in großen Mengen zu erledigen und dann das zweite Plugin die neuen Bilder verarbeiten zu lassen. Es funktioniert auch mit Teilinformationen: image-200x.jpg gibt ein Bild mit einer proportionalen Größe von 200 Pixel Breite zurück.

Thumbnails neu generieren erstellt tatsächlich Bilder in verschiedenen Größen neu, aber ich denke nicht, dass es auch Ihren Beitragsinhalt aktualisiert, um auf diese Bilder zu verweisen? Schlimmer noch, wenn die alten Zwischengrößen gelöscht werden, verweist Ihr Beitrag weiterhin auf den jetzt nicht vorhandenen image-600x400.jpg anstelle von image-450x300.jpg.

5
Jan Fabry

Melden Sie sich bei Ihrem Server an und wechseln Sie in das Stammverzeichnis von WordPress. Dann führen Sie aus:

cd wp-content/uploads/;
for img in `find . -name *.jpg -printf '%p\n'`
do
  mogrify -resize "450>x" $img;
done

Dadurch wird die Größe aller JPG-Dateien in Ihrem Upload-Ordner (und aller Unterordner!), Die breiter als 450 Pixel sind, proportional zu dieser Breite geändert. Wenn Sie PNG, GIF, ... haben, führen Sie einfach die entsprechende Dateiendung erneut aus.

Ich gehe davon aus, dass Sie den Standard-Upload-Ordner verwenden (ansonsten erste Zeile anpassen) und auf Ihrem Server imagemagick installiert ist.

Natürlich keine Garantie.

3
Raphael

Probieren Sie das Plugin 'Regenerate Thumbnails' aus, es macht genau das, wonach Sie suchen.

http://www.viper007bond.com/wordpress-plugins/regenerate-thumbnails/

1
Ben
if ( defined( 'WP_CLI' ) && WP_CLI ) {
    class RegenThumbs extends WP_CLI_Command
    {
        var $errors = false;
        var $unique_size_name = 'past_favourites';
          var $unique_size = 170; 

        public function __construct()
        {
            global $wpdb;

            if ( !$images = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' ORDER BY ID asc" ) ) {
                WP_CLI::error( "Unable to find any images. Are you sure some exist?" );
                return;
            }

            WP_CLI::line( 'Found ' . count( $images ) . ' pictures to regenerate!' );

            foreach ( $images as $image )
                $this->process( $image->ID );

            if ( $this->errors )
                WP_CLI::error( 'Finished regenerating images - however, there were some errors throughout.' );
            else
                WP_CLI::success( 'Finished - without any errors either!' );
        }

        function process( $id=false )
        {
        if( ! $id )
        return;            

            $image = get_post( $id );

            if ( !$image || 'attachment' != $image->post_type || 'image/' != substr( $image->post_mime_type, 0, 6 ) ) {
                $this->errors = true;
                WP_CLI::line( "FAILED: {$image->post_title} - invalid image ID" );
                return;
            }

        $meta_data = wp_get_attachment_metadata( $image->ID );

        if( isset( $meta_data['sizes'][ $this->unique_size_name ] ) && $meta_data['sizes'][ $this->unique_size_name  ]['width'] == $this->unique_size )
        {
        WP_CLI::line( "SKIPPED: $image->ID - There is an image called " . $this->unique_size_name );
        return;
        }

        $fullsizepath = str_replace( array( 
                        '/home/username/public_html/', 
                        '/home/17196/domains/domain.com/html/',
                        '/nfs/c02/h07/mnt/17196/domains/domain.com/html/',
                        '/mnt/gs02/herd04/17196/domains/domain.com/html/',
                        '/nfs/c02/h04/mnt/17196/domains/domain.com/html/'
                   ), 
                    '/srv/www/domain.com/current/', 
                    get_attached_file( $image->ID ) 
            );

            if ( false === $fullsizepath || !file_exists( $fullsizepath ) ) {
                $this->errors = true;
                WP_CLI::line( "FAILED: {$image->post_title} -  Can't find it $fullsizepath" );
                return;
            }

            // 5 minutes per image should be PLENTY
            @set_time_limit( 900 );

            $array_path = explode( DIRECTORY_SEPARATOR, $fullsizepath );
            $array_file = explode( '.', $array_path[ count( $array_path ) - 1 ] );

            $imageFormat = $array_file[ count( $array_file ) - 1 ];

            unset( $array_path[ count( $array_path ) - 1 ] );
            unset( $array_file[ count( $array_file ) - 1 ] );

            $imagePath = implode( DIRECTORY_SEPARATOR, $array_path ) . DIRECTORY_SEPARATOR . implode( '.', $array_file );
            $dirPath   = explode( DIRECTORY_SEPARATOR, $imagePath );
            $imageName = sprintf( "%s-", $dirPath[ count( $dirPath ) - 1 ] );
            unset( $dirPath[ count( $dirPath ) - 1 ] );
            $dirPath = sprintf( "%s%s", implode( DIRECTORY_SEPARATOR, $dirPath ), DIRECTORY_SEPARATOR );

            // Read and delete files
            $dir   = opendir( $dirPath );
            $files = array();
            while ( $file = readdir( $dir ) ) {
                if ( !( strrpos( $file, $imageName ) === false ) ) {
                    $thumbnail = explode( $imageName, $file );
                    if ( $thumbnail[ 0 ] == "" ) {
                        $thumbnailFormat = substr( $thumbnail[ 1 ], -4 );
                        $thumbnail       = substr( $thumbnail[ 1 ], 0, strlen( $thumbnail[ 1 ] ) - 4 );
                        $thumbnail       = explode( 'x', $thumbnail );
                        if ( count( $thumbnail ) == 2 ) {
                            if ( is_numeric( $thumbnail[ 0 ] ) && is_numeric( $thumbnail[ 1 ] ) ) {
                                WP_CLI::line( "Thumbnail: {$thumbnail[0]} x {$thumbnail[1]} was deleted." );
                                @unlink( $dirPath . $imageName . $thumbnail[ 0 ] . 'x' . $thumbnail[ 1 ] . $thumbnailFormat );
                            }
                        }
                    }
                }
            }

            $metadata = wp_generate_attachment_metadata( $image->ID, $fullsizepath );

            if ( is_wp_error( $metadata ) ) {
                WP_CLI::line( $metadata->get_error_message() );
                return;
            }

            if ( empty( $metadata ) ) {
                $this->errors = true;
                WP_CLI::line( 'Unknown failure reason.' );
                return;
            }
            wp_update_attachment_metadata( $image->ID, $metadata );
            WP_CLI::line( esc_html( get_the_title( $image->ID ) ) . " (ID {$image->ID}): All thumbnails were successfully regenerated in  " . timer_stop() . "  seconds " );
        }

    }
    WP_CLI::addCommand( 'regen_thumbs', 'RegenThumbs' );
}

Beispiel für ein WordPress-Thema: image

0
Rıdvan Coşkun