Zwingen Sie WordPress, Miniaturansichten in derselben Größe wie das hochgeladene Bild zu erstellen

Lesezeit: 9 Minuten

AFAIK, WordPress generiert Thumbnails (zB ‘groß’) nur dann, wenn die gewünschte Bildgröße erreicht ist kleiner (und nicht, wenn die Zielgröße gleich wäre).

ich benutze

add_image_size( 'referenzen-big', 627, 490, true );

Wenn mein Kunde also eine Datei mit 627x490px hochlädt, wird das Originalbild verwendet.

Dies ist aber nicht erwünscht, da dieser nach Treu und Glauben die Bilder in der richtigen Größe und auch höchstmöglichen .jpg-Komprimierung hochlädt. Dies führt dazu, dass Bilder in diesem Fall etwa 300 kB groß sind.

Ein praktischer, aber technisch nicht einwandfreier Weg wäre, ihn zu bitten, seine Bilder in 628 x 490 hochzuladen, also 1 Pixel mehr Breite, was eine Neuskalierung erzwingt. Vorschläge wie dieser werden nicht akzeptiert 🙂

Bisher habe ich die Haken untersucht, die für die Bilderzeugung verantwortlich sind, und die verantwortliche Funktion aufgespürt; Hier ist der letzte Haken, den ich gefunden habe:
image_make_intermediate_size()

Dies ist die Funktion, die für die eigentliche Größenänderung verantwortlich ist:
image_resize_dimensions(). Es gibt sogar eine Zeile, in der es heißt:

// if the resulting image would be the same size or larger we don't want to resize it
if ( $new_w >= $orig_w && $new_h >= $orig_h )
    return false;

Wie kann ich diese Funktion „Größenänderung erzwingen“ aktivieren?

  • Soweit ich Ihre Bedenken verstehe, darf ich fragen, was das Problem ist, wenn die Originalgröße verwendet wird, wenn sie verfügbar ist?

    – Obmerk Kronen

    20. November 2012 um 13:00 Uhr

  • Die hochgeladenen Bilder sind zu groß, etwa 300 kB, viel zu viel für die betreffende Seite.

    – Sebastian Schmidt

    20. November 2012 um 15:09 Uhr

  • Sie können die Qualität jederzeit reduzieren (wenn es jpg ist): add_filter('jpeg_quality', 'jpeg_quality_callback'); function jpeg_quality_callback($arg) { return (int)100; // or 80 or whatever }

    – Obmerk Kronen

    20. November 2012 um 16:37 Uhr


  • bitte beachten Sie diesen Absatz: > Dies ist aber nicht erwünscht, da dies nach bestem Wissen und Gewissen die Bilder in der richtigen Größe und auch höchstmöglichen .jpg-Komprimierung hochlädt. Dies führt dazu, dass Bilder in diesem Fall etwa 300 kB groß sind.

    – Sebastian Schmidt

    21. November 2012 um 16:23 Uhr


  • Kreuzen Sie die akzeptierte Antwort an wordpress.stackexchange.com/questions/21544/… für eine gute Antwort auf diese Frage. Dasselbe erreichen Sie mit wp_get_attachment_image()

    – fkössler

    11. August 2013 um 2:17 Uhr

Benutzer-Avatar
Daniel C

Hier ist die gesuchte Lösung, die in Ihre functions.php-Datei eingefügt werden soll:

function thumbnail_upscale( $default, $orig_w, $orig_h, $new_w, $new_h, $crop ){
    if ( !$crop ) return null; // let the wordpress default function handle this

    $aspect_ratio = $orig_w / $orig_h;
    $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);

    $crop_w = round($new_w / $size_ratio);
    $crop_h = round($new_h / $size_ratio);

    $s_x = floor( ($orig_w - $crop_w) / 2 );
    $s_y = floor( ($orig_h - $crop_h) / 2 );

    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}
add_filter( 'image_resize_dimensions', 'thumbnail_upscale', 10, 6 );

Das ist hier zu finden:
https://wordpress.stackexchange.com/questions/50649/how-to-scale-up-featured-post-thumbnail

Es wird Bilder hochskalieren und Thumbnails für alle Bildgrößen generieren. Der einzige Nachteil, der wahrscheinlich kein Nachteil ist, ist, dass Sie für alle hochgeladenen Bilder eine separate Datei für jede Bildgröße erhalten … selbst wenn es sich um ein kleines Symbol oder so etwas handelt. Hoffe das hilft.

Obwohl es immer noch nicht optimal ist, wäre es nicht besser, eine serverseitige Bibliothek wie z TimDaumen und geben Sie dann die Originalquelle an und verwenden Sie den Parameter ‘q’ (= Qualität)?

Das würde das Bild optimieren, mit der Originalgröße.

Könnte einige Vorbehalte geben, aber wirklich – alles ist besser als den Kern zu modifizieren.

Wenn der Speicherplatz nicht das Problem ist, sondern nur die Download-Geschwindigkeit wie in meinem Fall …

Das Problem, mit dem ich konfrontiert war, war, dass der Kunde beim Hochladen von Feature-Bildern nicht auf Größe oder Dimension geachtet hat. Das Design ist ein ansprechendes Design und funktioniert gut mit dem Bereich der Bildhöhen und der Skalierung auf die gewünschte Bildbreite auf der Seite. So war es möglich, sehr große Dateien hochzuladen und die Größe nicht zu bemerken, wenn man sich in einem Hochgeschwindigkeitsnetzwerk befand.

Ich habe benutzerdefinierte Bildgrößen hinzugefügt, ein Plugin verwendet, um die Regenerierung zu erzwingen, und das Design so geändert, dass stattdessen die benutzerdefinierte Größe angezeigt wird.

  • Welches Plugin hast du verwendet?

    – Verdächtiger

    24. August 2013 um 18:55 Uhr

Ich hatte ein ähnliches Problem: Eine Kunden-Website sollte größere Daumen generieren. Am Ende habe ich ein Plugin mit einem benutzerdefinierten Bildeditor wie folgt erstellt:

require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';

function im_add_image_editor($implementations) {
    array_unshift($implementations, 'IM_Image_Editor_GD');
    return $implementations;
}
add_filter('wp_image_editors', 'im_add_image_editor');

Der IM_Image_Editor_GD erweitert WP_Image_Editor_GD, ändert die Funktion _resize (wer ruft image_resize_dimensions), um eine interne Version davon aufzurufen, wie folgt:

class IM_Image_Editor_GD extends WP_Image_Editor_GD {
    public function __destruct() {
        parent::__destruct();
    }

    protected function _resize( $max_w, $max_h, $crop = false ) {
        $dims = $this->image_resize_dimensions( $this->size['width'], $this->size['height'], $max_w, $max_h, $crop );
        if ( ! $dims ) {
            return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions'), $this->file );
        }
        list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;

        $resized = wp_imagecreatetruecolor( $dst_w, $dst_h );
        imagecopyresampled( $resized, $this->image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );

        if ( is_resource( $resized ) ) {
            $this->update_size( $dst_w, $dst_h );
            return $resized;
        }

        return new WP_Error( 'image_resize_error', __('Image resize failed.'), $this->file );
    }

    protected function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false) {
        // Copied original image_resize_dimensions and changed the test
    }
}

Hoffe, das hilft und entschuldige mich für mein Englisch!

Sie können mit diesem Plugin den Besuch verwalten https://wordpress.org/plugins/simple-image-sizes/

Einfache Bildgrößen

Mit diesem Plugin können Sie benutzerdefinierte Bildgrößen für Ihre Website erstellen. Überschreiben Sie Ihre Themengrößen direkt auf der Medienoptionsseite. Sie können alle gerade erstellten Größen regenerieren und auswählen, welche Sie regenerieren möchten. Sie können jetzt den gesamten Code kopieren und in Ihre Funktionsthemendatei einfügen. Jetzt können Sie die generierten Größen direkt in Ihren Beiträgen verwenden und Bilder in der richtigen Größe einfügen! Jetzt wählen Sie aus, ob Sie die Größe im Post-Insert-Bild anzeigen möchten. Jetzt können Sie die Bilder einzeln im allgemeinen Bereich „Medien“ neu generieren. Jetzt können Sie die Bilder per Massenaktion im allgemeinen Bereich „Medien“ regenerieren. Jetzt können Sie die Bildgrößen auf der Bearbeitungsseite für einzelne Anhänge neu generieren.

Geben Sie hier die Bildbeschreibung ein

  • Völlig unabhängige Antwort; hast du meine frage überhaupt gelesen?

    – Sebastian Schmidt

    25. Dezember 2014 um 3:00 Uhr

  • Hallo Sebastian, hast du dieses Plugin schon ausprobiert codecanyon.net/item/theia-smart-thumbnails-for-wordpress/…

    – Sabir Abdul Gafoor Shaikh

    29. März 2015 um 13:59 Uhr

  • Nein. Wie würde es Ihrer Meinung nach mein Problem lösen? Hast du mein Problem überhaupt verstanden? Tut mir leid, ich bin es leid, dass Leute einige generische “set-custom-image-sizes”-Plugins und Code empfehlen. Das ist NICHT die Frage.

    – Sebastian Schmidt

    1. April 2015 um 14:02 Uhr


  • Hallo Sebastian, ich habe deine Frage vollkommen verstanden. Ich versuche, Ihnen die nächste Lösung zu geben. 1. Einfaches Bildgrößen-Plugin: Hilft Ihnen bei normalem und hartem Zuschneiden. Wunschgröße erforderlich. Bitte installieren und prüfen. 2. Codecanyon-Plugin: Es hilft Ihnen, das Bild mit dem genauen Aussehen zu speichern. Der Benutzer kann nach Belieben zuschneiden. Wir geben Ihnen nur die nächstgelegene Lösung.

    – Sabir Abdul Gafoor Shaikh

    2. April 2015 um 7:21 Uhr


Benutzer-Avatar
csehasib

Die Standard-Bildgrößen von WordPress sind „thumbnail“, „medium“, „large“ und „full“ (die Größe des von Ihnen hochgeladenen Bildes). Diese Bildgrößen können im Medienbereich der WordPress-Administration unter Einstellungen > Medien konfiguriert werden. So können Sie diese Standardgrößen mit the_post_thumbnail() verwenden:

the_post_thumbnail();                  // without parameter -> 'post-thumbnail'
the_post_thumbnail('thumbnail');       // Thumbnail (default 150px x 150px max)
the_post_thumbnail('medium');          // Medium resolution (default 300px x 300px max)
the_post_thumbnail('large');           // Large resolution (default 640px x 640px max)
the_post_thumbnail('full');            // Full resolution (original size uploaded)
the_post_thumbnail( array(100,100) );  // Other resolutions

siehe auch vollständige Dokumentation in http://codex.wordpress.org/Function_Reference/the_post_thumbnail

  • Völlig unabhängige Antwort; hast du meine frage überhaupt gelesen?

    – Sebastian Schmidt

    25. Dezember 2014 um 3:00 Uhr

  • Hallo Sebastian, hast du dieses Plugin schon ausprobiert codecanyon.net/item/theia-smart-thumbnails-for-wordpress/…

    – Sabir Abdul Gafoor Shaikh

    29. März 2015 um 13:59 Uhr

  • Nein. Wie würde es Ihrer Meinung nach mein Problem lösen? Hast du mein Problem überhaupt verstanden? Tut mir leid, ich bin es leid, dass Leute einige generische “set-custom-image-sizes”-Plugins und Code empfehlen. Das ist NICHT die Frage.

    – Sebastian Schmidt

    1. April 2015 um 14:02 Uhr


  • Hallo Sebastian, ich habe deine Frage vollkommen verstanden. Ich versuche, Ihnen die nächste Lösung zu geben. 1. Einfaches Bildgrößen-Plugin: Hilft Ihnen bei normalem und hartem Zuschneiden. Wunschgröße erforderlich. Bitte installieren und prüfen. 2. Codecanyon-Plugin: Es hilft Ihnen, das Bild mit dem genauen Aussehen zu speichern. Der Benutzer kann nach Belieben zuschneiden. Wir geben Ihnen nur die nächstgelegene Lösung.

    – Sabir Abdul Gafoor Shaikh

    2. April 2015 um 7:21 Uhr


Benutzer-Avatar
Sebastian Schmidt

Egal, ich habe den Kern geändert. Tut mir innerlich weh, aber für dieses Projekt ist es die beste Lösung.

  • Auch ich suche nach einer Lösung für genau dieses Problem. Ich möchte meine Kunden nicht zwingen, Photoshop vor dem Hochladen zu verwenden, um eine Bilddateiseite zu verkleinern. Gibt es andere Lösungen als den Kern zu hacken?

    – Adam Christianson

    28. Januar 2013 um 7:32 Uhr

  • Leute, das ist nicht lustig … Ich, der allmächtige Thread-Eröffner, werde dafür herabgestuft, dass ich diese tatsächliche Lösung gepostet habe, die tatsächlich funktioniert hat. Vielen Dank für Ihre bisherige Hilfe bei der Recherche dieses Problems, aber jetzt gehe ich zurück zu meiner eigenen Höhle …

    – Sebastian Schmidt

    25. März 2013 um 23:32 Uhr

  • Ganz zu schweigen davon, dass das Ändern des Kerns von WordPress nicht hilft, sobald Sie Ihren Kern aktualisieren. Den Kern zu wechseln ist nie eine richtige Lösung… irgendwo gibt es immer einen Haken, man muss nur wissen wo man suchen muss 🙂

    – Daniel C

    18. November 2015 um 20:26 Uhr

  • Ja, bitte erzähl mir von diesem mysteriösen Haken, der mir gefehlt haben muss … es gibt keinen, deshalb war die einzige Möglichkeit, dies zum Laufen zu bringen, doch den Kern zu ändern … zumindest damals im Jahr 2012

    – Sebastian Schmidt

    7. April 2016 um 13:55 Uhr


  • Ich habe dir von dem mysteriösen Hook erzählt… in meiner Antwort.

    – Daniel C

    5. Mai 2016 um 21:05 Uhr

1385020cookie-checkZwingen Sie WordPress, Miniaturansichten in derselben Größe wie das hochgeladene Bild zu erstellen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy