Warum schneidet WordPress alle meine Bilder automatisch ab?

Bin neu bei WordPress, wenn ich ein Bild hochlade, schneidet WordPress automatisch in seine eigenen Größen ab, die ich im Medienbereich nicht erwähnt habe (Einstellungen »Medien).

Einstellungen, die ich in Medien gespeichert habe, sind:
Einstellung, die ich in Medien gespeichert habe.

Und wenn ich das Verzeichnis einchecke, schneide ich automatisch in diese Größen:
Bildbeschreibung hier eingeben

Wie ist das passiert?

Solutions Collecting From Web of "Warum schneidet WordPress alle meine Bilder automatisch ab?"

WordPress ist standardmäßig so konzipiert, dass drei Arten von Zuschneiden aller hochgeladenen Bilder (Medien) erstellt werden:

  • Miniaturansicht (normalerweise 150px × 150px)
  • Medium (normalerweise 300px × 300px)
  • Groß (normalerweise 1024px × 1024px)

Es ist erforderlich, die Geschwindigkeit der Website bei Bedarf in verschiedenen Größen zu gewährleisten. Also, mit dem Hochladen des Originalbildes würde es mindestens 4 Dateien geben –

  1. Die Originaldatei (nicht beschnitten),
  2. Groß,
  3. Medium und
  4. Miniaturansicht.

Wie Sie bereits wissen, können Sie aus /wp-admin/options-media.php die Abmessungen der Standardgröße ändern. Sie können also die Standardgrößen für Ihre Zwecke verwenden. Aber wenn Sie noch eine andere Größe als die drei benötigen, können Sie mit WordPress auch neue Bildgrößen hinzufügen.

Wenn add_image_size() function add_image_size() mit dem gewünschten Parameter verwenden, können Sie eine neue Größe für Ihre Site hinzufügen. Verwenden Sie die function in Ihrer functions.php , um Ihre gewünschte Bildgröße hinzuzufügen:

 add_image_size( $name, $width, $height, $crop ); 

Woher –
$name : string schreibe den Namen in ein einzelnes Zitat, zB 'portfolio'
$width : integer Schreibe die gewünschte Breite, also 500 (in px)
$height : integet schreibe die gewünschte Höhe, also 300 (in px)
$crop : boolean write true wenn das Bild scharf abgeschnitten werden soll, andernfalls false

In der Regel können wir verschiedene ausgewählte Bilder an einem beliebigen Ort unseres Themas aufrufen, indem Sie Folgendes verwenden:

 the_post_thumbnail( 'medium' ); //it will display only the medium size of the original image 

Wenn Sie Ihre neue Größe verwenden möchten, verwenden Sie:

 the_post_thumbnail( 'portfolio' ); //as I named my size as 'portfolio' 

WARNUNG: Da WordPress standardmäßig 3 anpassbare Bildgrößen erzeugt, erstellt es 4 Dateien für jedes Bild. Wenn Sie weitere neue Größen verwenden, erhöht sich die Anzahl der Dateien auf Ihrem Website-Host. Die Verwendung von mehr Bildgrößen ist daher eine Frage des Platzbedarfs auf Ihrer Website. Dadurch werden mehr Website-Bereiche belegt.

BEARBEITEN

Und nach dem Hinzufügen jeder neuen Bildgröße ist ein wichtigstes Plugin:

» Thumbnail neu erstellen – WordPress Plugin

In Wirklichkeit kann die neu zugewiesene Bildgröße nur in neu hochgeladenen Bildern verfügbar sein. Um also die neue Größe für alle zuvor hochgeladenen Bilder zu erhalten, müssen Sie das Plugin installieren und alle Miniaturbilder neu generieren. Es wäre eine einmalige Maßnahme, die für immer bestehen würde *.

Und Ihre wichtigste Antwort sollte sein:
Geschwindigkeit der Website: WordPress schneidet Bilder aus, um die Geschwindigkeit der Website zu erhöhen. Wenn Sie Google PageSpeed ​​verwenden, wissen Sie Folgendes:

Serve skalierte Bilder
Die richtige Dimensionierung von Bildern kann viele Datenbytes speichern.
Erfahren Sie mehr

BEARBEITEN 2

Wie Sie bereits vorgeschlagen haben, kann Ihr Plugin, wenn es eine ähnliche add_image_size() -function verwendet, eine neue Bildgröße erstellen. Wenn Sie nach der Deaktivierung Ihrer Plugins das Thumbnails-Plugin zum Regenerieren der Miniaturbilder verwenden, erhalten Sie die tatsächlichen Größen. Wenn das nicht hilft, dann überprüfe die functions.php deines Themes oder eine Datei mit zusätzlichen functionen für die functions.php add_image_size() , und jetzt weißt du, was zu tun ist.

Ja, WordPress ändert die Größe und schneidet alle Bilder ab, je nachdem, was das Thema @Gerard in seiner Antwort bereits definiert hat. Also ist das letzte boolesche Argument für add_image_size() zu beschneiden oder nicht. Beachten Sie, dass dies nicht die Position des Beschnitts definiert. Um dieses Verhalten zu ändern, schauen Sie sich diese Antwort an .

Was passiert im core?

Wie Sie bereits in der Quelle von add_image_size() , verwendet WP die global $_wp_additiona_image_sizes , um die Einstellungen für Ihre global $_wp_additiona_image_sizes zu speichern und zu verwalten. Wenn Sie nun ein Bild hochladen, kommt die class WP_Image_Editor ins Spiel und ruft – abhängig von den auf Ihrem Server aktivierten PHP-Erweiterungen – entweder WP_Image_Editor_GD oder WP_Image_Editor_Imagick . Jetzt haben beide Singletons eine resize() -Methode, die image_resize_dimensions() . Am Ende image_resize_dimensions() das Bild nicht an oder beschneidet es. Es berechnet nur die Werte.

Dies geschieht durch die Methode crop() in der Imagick-class und durch Verwendung von PHPs nativem imagecopyresampled() innerhalb der GD-class.

Wie deaktiviere ich das Zuschneiden?

Zunächst haben wir viele Möglichkeiten:

  • Ermitteln Sie, welche class verwendet wird (welche PHP-Erweiterung unterstützt wird) und fangen Sie dann ab, was zum Zuschneiden verwendet wird (siehe oben).
  • image_resize_dimensions() Sie den gesamten process kurz und lassen Sie image_resize_dimensions() arbeiten.

Wir werden die spätere Methode hier verwenden. Fühlen Sie sich frei, Ihre eigene Lösung als separate Antwort hinzuzufügen. Hier ist, was Core uns bietet: Ein Filter, der alle Parameter enthält.

 $output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop ); 

Jetzt ist das erste Argument null , was dem core in der nächsten Zeile sagt, ob wir intern überschreiben wollen, was diese function tut – und sie durch unser eigenes Verhalten ersetzen – oder nicht. Wenn wir also etwas von null , dann wird dies der core verwenden. Denken Sie daran, dass Sie dort alles image_resize_dimensions() können, aber Core wird immer den gleichen Rückgabewert erwarten wie image_resize_dimensions() standardmäßig. Aus den Inline-Kommentaren:

Das Rückgabearray stimmt mit den Parametern von imagecopyresampled() :

int dst_x, int dst_y,

int src_x, int src_y,

int dst_w, int dst_h,

int src_w, int src_h

Jetzt, um nur den Ausschnitt zu deaktivieren, müssten wir die ganzen Interna ersetzen (mit anderen Worten: klonen) – etwas, das wir vermeiden wollen. Daher verwenden wir einen “Einmalfilter”, der sich selbst deaktiviert. Wir tun das, um die Interna zu benutzen, aber wir werden einfach das los, was wir nicht brauchen.

 < ?php defined( 'ABSPATH' ) or exit; /* Plugin Name: (#124009) Disable image crop */ add_filter( 'image_resize_dimensions', 'wpse124009DisableCrop', 10, 6 ); function wpse124009DisableCrop( $enable, $orig_w, $orig_h, $dest_w, $dest_h, $crop ) { // Instantly disable this filter after the first run remove_filter( current_filter(), __FUNCTION__ ); return image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, false ); } 

Jetzt ist das Zuschneiden überall deaktiviert. Wenn Sie Multisite betreiben oder nicht darüber nachdenken wollen, ob dieses Plugin aktiviert ist, gehen Sie es einfach als Mu-Plugin ein.

Bitte beachten Sie, dass oben nicht getestet, aber nach dem Lesen corequelle von meinem Kopf abgeschrieben.

zusätzliche Information

Weitere Informationen zu den Bildbearbeitungsklassen in den Folien von Marko von WordCamp Europe und dem Video zur Präsentation finden Sie auf WordPress.tv .

Normalerweise liegt es daran, dass ein WordPress-Theme die Thumbnails auf seinem Code verwendet: in Loops, Galerien usw. Er ist in der Datei functions.php definiert:

 add_image_size( $name, $width, $height, $crop ); 

Zum Beispiel so:

 add_theme_support('post-thumbnails'); add_image_size('custom-thumbnail', 80, 80, true ); add_image_size('medium-thumbnail', 180, 120, true ); add_image_size('large-thumbnail', 571, 300, true ); 

Ich empfehle Ihnen nicht, den Code zu entfernen, wenn Sie das gute functionieren Ihres Themas wirklich behalten möchten. Wenn Sie es entfernen möchten, müssen Sie die Aufrufe in den anderen Dateien löschen, in denen es verwendet wird. häufig in der Datei loop.php.

Plugins und Designs können ihre eigenen Miniaturansichten definieren. WordPress konvertiert alle neu hochgeladenen Bilder in alle registrierten Größen.