Ein Bild von der URL abrufen, seine Größe ändern und einen benutzerdefinierten Ordner (nicht die Medienbibliothek) speichern

Was ich machen möchte, ist folgendes:

  • Von einer Remote-Bild-URL aus möchte ich ein Thumbnail mit bestimmten Abmessungen generieren.
  • Speichern Sie nur die generierte Bildminiaturdatei, nicht das ursprüngliche Remote-Bild
  • Speichern Sie die Bildminiaturdatei in einem benutzerdefinierten Verzeichnis (nicht in / wp-content / media /)

Ich bin mir nicht sicher, wie es weitergeht, ich lese derzeit online Guides und habe wp_get_image_editor () im Auge, obwohl ich mir nicht sicher bin, ob ich auf dem richtigen Weg bin.

Solutions Collecting From Web of "Ein Bild von der URL abrufen, seine Größe ändern und einen benutzerdefinierten Ordner (nicht die Medienbibliothek) speichern"

Ich habe es geschafft, eine Lösung für mein Problem zu finden, obwohl ich PHP GD-functionen anstelle einer WordPress-function verwendet habe. Ich hoffe, dass dies anderen helfen kann, die versuchen, etwas Ähnliches zu tun.

$src = // Source image URL $max_w = // Output maximum width $max_h = // Output maximum height $dir = // Output directory $fle = // Output filename function createThumbnail( $src, $max_w, $max_h, $dir, $fle ) { $img_url = file_get_contents( $src ); $img = imagecreatefromstring( $img_url ); $old_x = imagesx( $img ); // Source image width $old_y = imagesy( $img ); // Source image height // Conditions for maintaining output aspect ratio switch ( true ) { case ( $old_x > $old_y ): // If source image is in landscape orientation $thumb_w = $max_w; $thumb_h = $old_y / $old_x * $max_w; break; case ( $old_x < $old_y ): // If source image is in portrait orientation $thumb_w = $old_x / $old_y * $max_h; $thumb_h = $max_h; break; case ( $old_x == $old_y ): // If source image is a square $thumb_w = $max_w; $thumb_h = $max_h; break; } $thumb = imagecreatetruecolor( $thumb_w, $thumb_h ); /** I quoted this one out since I ran in compatibility issues, I'm using PHP 5.3.x and imagesetinterpolation() doesn't exist in this version imagesetinterpolation( $thumb, IMG_SINC ); // Recommended Downsizing Algorithm **/ imagecopyresampled( $thumb, $img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y ); $result = imagejpeg( $thumb, $dir . $fle ); imagedestroy( $thumb ); imagedestroy( $img ); return $result; }