it-swarm.com.de

Warum schneide WordPress alle meine Bilder automatisch zu?

Ich bin neu in WordPress. Wenn ich ein Bild hochlade, schneidet WordPress automatisch in seine eigenen Größen zu, die ich im Medienbereich (Einstellungen "Medien) nicht erwähnt habe.

Einstellungen, die ich in Medien gespeichert habe, sind:
Setting which i saved in media.

Und wenn ich das Verzeichnis einchecke, wird es automatisch in die folgenden Größen zugeschnitten:
enter image description here

Wie ist das passiert?

6
abhishek360

WordPress ist standardmäßig so konzipiert, dass 3 Arten des Zuschneidens von hochgeladenen Bildern (Medien) generiert werden:

  • Miniaturansicht (normalerweise 150 x 150 Pixel)
  • Mittel (normalerweise 300 x 300 Pixel)
  • Groß (normalerweise 1024 x 1024 Pixel)

Dies ist erforderlich, um die Geschwindigkeit der Site bei unterschiedlichen Größen zu gewährleisten. Beim Hochladen des Originalbildes müssten also mindestens 4 Dateien vorhanden sein.

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

Wie Sie bereits wissen, können Sie mit /wp-admin/options-media.php auch die Abmessungen der Standardgröße ändern. Sie können also weiterhin die Standardgrößen für Ihren benutzerdefinierten Zweck verwenden. Wenn Sie jedoch immer noch eine andere Größe als die drei benötigen, können Sie in WordPress auch neue Bildgrößen hinzufügen.

Durch die Verwendung von add_image_size() mit Ihrem gewünschten Parameter können Sie eine neue Größe für Ihre Site hinzufügen. Verwenden Sie die Funktion in Ihrem functions.php, um die gewünschte Bildgröße hinzuzufügen:

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

Woher -
$name: string schreibe den Namen in einfache Anführungszeichen, d. h. 'portfolio'
$width: Ganzzahl Schreiben Sie die gewünschte Breite, d. h. 500 (in px)
$height: integet schreibe die gewünschte Höhe, d. h. 300 (in px)
$crop: boolean write true wenn Sie das Bild hart zuschneiden möchten, verwenden Sie andernfalls false

Normalerweise können wir in jedem Bereich unseres Themas ein anderes Featured Image aufrufen, indem wir 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 generiert, werden für jedes Bild 4 Dateien erstellt. Durch die Verwendung neuer Größen wird die Anzahl der Dateien auf Ihrem Site-Host erhöht. Die Verwendung größerer Bildgrößen ist also eine Frage des Host-Space-Problems Ihrer Site - es werden mehr Site-Spaces verbraucht.

BEARBEITEN

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

" Thumbnail neu generieren - WordPress Plugin

In der Realität kann die neu zugewiesene Bildgröße nur für neu hochgeladene Bilder verfügbar sein. Um die neue Größe auch für alle zuvor hochgeladenen Bilder zu erhalten, muss das Plugin installiert sein und alle Miniaturansichten müssen erneut erstellt werden. Es wäre eine einmalige Maßnahme, die ewig dauern würde *.

Und Ihre Hauptantwort sollte lauten:
Site-Geschwindigkeit: WordPress schneidet Bilder zu, um die Site-Geschwindigkeit zu erhöhen. Wenn Sie Google PageSpeed ​​verwenden, wird Folgendes empfohlen:

Serviere skalierte Bilder
Durch die richtige Größenanpassung von Bildern können viele Datenbytes gespart werden.
Lern ​​mehr

BEARBEITEN 2

Wie Sie bereits vorgeschlagen haben, kann Ihr Plug-in eine neue Bildgröße erstellen, wenn Sie eine ähnliche Funktion wie add_image_size() verwenden. Wenn Sie also nach dem Deaktivieren Ihrer Plugins das Plugin Miniaturbilder neu generieren verwenden, um die Miniaturbilder neu zu generieren, erhalten Sie die tatsächlichen Größen. Wenn dies nicht hilft, überprüfen Sie den functions.php Ihres Themas oder eine hinzugefügte Funktionsdatei auf eine solche add_image_size() -Funktion. Jetzt wissen Sie, was zu tun ist.

9
Mayeenul Islam

Ja, WordPress passt die Größe aller Bilder an und schneidet sie ab, je nachdem, was Ihr als @Gerard definiertes Thema bereits in seiner Antwort erklärt hat. Das letzte boolesche Argument für add_image_size() lautet also crop oder not. Beachten Sie, dass dies nicht die Position des Zuschnitts definiert. Um dieses Verhalten zu ändern schauen Sie sich diese Antwort zum Beispiel an .

Was passiert im Kern?

Wie Sie bereits in der Quelle von add_image_size() gesehen haben, verwendet WP den global $_wp_additiona_image_sizes , um die Einstellungen für Ihre Bilderzeugung zu speichern und zu verarbeiten. Wenn Sie jetzt ein Bild hochladen, wird die Klasse WP_Image_Editor ins Spiel gebracht und - abhängig von den PHP auf Ihrem Server aktivierten Erweiterungen - entweder WP_Image_Editor_Gd oder WP_Image_Editor_Imagick aufgerufen. Jetzt haben beide Singletons eine Methode resize(), die image_resize_dimensions() aufruft. Am Ende ändert image_resize_dimensions() not die Größe des Bildes oder beschneidet es. Es werden nur die Werte berechnet.

Dies geschieht durch die Methode crop() in der Imagick-Klasse und durch die Verwendung von PHPs native imagecopyresampled() innerhalb der Gd-Klasse.

Wie deaktiviere ich das Zuschneiden?

Erstens haben wir viele Möglichkeiten:

  • ermitteln Sie, welche Klasse verwendet wird (welche PHP ext. wird unterstützt), und fangen Sie dann ab, welche Klasse zum Zuschneiden verwendet wird (siehe oben).
  • Schließen Sie den gesamten Prozess kurz und lassen Sie image_resize_dimensions() die Arbeit erledigen.

Wir werden die spätere Methode hier verwenden. Fühlen Sie sich frei, Ihre eigene Lösung als separate Antwort hinzuzufügen. Folgendes bietet uns der Kern: 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, das core in der nächsten Zeile mitteilt, ob wir überschreiben möchten, was diese Funktion intern tut - und es durch unser eigenes Verhalten ersetzen möchten - oder nicht. Wenn wir also etwas anderes als null zurückgeben würden, würde dies der Kern verwenden. Denken Sie daran, dass Sie alles dort ablegen können, Core jedoch den gleichen Rückgabewert erwartet, den image_resize_dimensions() standardmäßig verwendet. Aus den Inline-Kommentaren:

Das Rückgabearray vergleicht die Parameter mit 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

Um Crop zu deaktivieren, müssten wir jetzt die gesamten Interna ersetzen (mit anderen Worten: klonen) - etwas, das wir vermeiden wollen. Aus diesem Grund verwenden wir einen "Einmalfilter", der sich selbst deaktiviert. Wir tun das, um die Interna zu nutzen, aber wir müssen nur das loswerden, 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 deaktiviert überall. Wenn Sie Multisite ausführen oder nicht darüber nachdenken möchten, ob dieses Plugin aktiviert ist, verwenden Sie es einfach als Mu-Plugin.

Bitte beachte, dass das obige nicht getestet wurde, sondern nach dem Lesen der Kernquelle von meinem Kopf abgeschrieben wurde.

Zusätzliche Information

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

7
kaiser

Normalerweise liegt es daran, dass ein Wordpress-Theme die Thumbnails in seinem Code verwendet: in Loops, Galerien usw. Es 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 wirklich das gute Funktionieren Ihres Themas beibehalten möchten. Wenn Sie es entfernen möchten, müssen Sie die Anrufe in den anderen Dateien löschen, in denen es verwendet wird. häufig in der Datei loop.php.

3
Gerard

Plugins und Themes können ihre eigenen Thumbnail-Größen definieren. WordPress konvertiert alle neu hochgeladenen Bilder in alle registrierten Größendefinitionen.

2