✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuvien koon muuttaminen ohjelmallisesti WordPressissä

31

Jos olet joskus joutunut muuttamaan kuvien kokoa ohjelmallisesti WordPressissä, olet ehkä törmännyt image_resize – funktioon.

Lisäksi saatat tietää, että se on poistettu käytöstä (koska tämä näkyy näytön yläreunassa):

Tämä toiminto on vanhentunut. Käytä sen sijaan wp_get_image_editor(): ta.

Ja sen vanhentuminen, kuten on totta kaikille niille, jotka tekevät hyvää työtä toiminnallisuuden poistamiseksi, se ei ole ilman sen korvaamista.

Tässä tapauksessa puhumme WP-kuvaeditorista. Tämä on WordPressin luokka, jonka avulla voimme suorittaa samat toiminnot kuvien koon muuttamiseen ohjelmallisesti, mitä teimme aiemmin alkuperäisellä toiminnolla.

Selvyyden vuoksi tämä tietty viesti ei ole täydellinen opetusohjelma WP_Image_Editor.

Sen sijaan se on yksinkertainen opas kuvien koon muuttamiseen vanhentuneen toiminnon sijaan sekä selitykset mahdollisten virheiden käsittelystä.

Käytettävän kuvan löytäminen

Riippuen siitä, mitä olet tekemässä, saatat pystyä hakemaan kuvan tiedostonimen itse WordPressistä. tässä esimerkissä aion kuitenkin yksinkertaisesti koodata tiedoston polun.

Tämä on helpoin tapa selittää, kuinka luokkaa käytetään verrattuna tangenttiin, jotta kuva voidaan hakea ohjelmallisesti, saada sen polku, lähettää se editoriluokkaan ja niin edelleen.

Oletetaan siis, että annettu polku kuvaan on jotain tällaista:

<?php

$filename = '/Users/tommcfarlin/Projects/acme/wp-content/uploads/2018/06/original-image.jpg';
if (!file_exists($filename)) {
  return;
}

Sitä käyttämällä tallennamme sen muuttujaan, jonka voimme siirtää toiseen funktioon, jos haluamme käyttää alkuperäistä tiedostoa useita kertoja.

Kuvaeditorin esiintymän hankkiminen

Seuraavaksi sinun on hankittava kuvaeditoriluokan esiintymä, jotta voit käyttää yllä olevalla polulla olevaa kuvaa. Kaikkein yksinkertaisimmassa muodossaan se ei ole muuta kuin tiedostonimen välittämistä funktiolle ja sitten joukko argumentteja.

Tässä viestissä en ole huolissani argumenttien joukosta – vain editorin esiintymän hankkimisesta, jolla voin muuttaa kuvan kokoa.

Voit napata esiintymän mainitusta editorista seuraavasti:

<?php

// Grab the editor for the filename of the image. 
$filename = '/Users/tommcfarlin/Projects/acme/wp-content/uploads/2018/06/original-image.jpg';
if (!file_exists($filename)) {
  return;
}

$editor = wp_get_image_editor( $filename, array() );

Tämä palauttaa joko ilmentymän editorin esiintymän **[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)**(yhdessä virheilmoituksen ja muita tietoja, joita voit käyttää ongelman määrittämiseen). On aina hyvä tarkistaa, onko palautettu arvo virhe, ja keskeyttää tulevat toiminnot.

<?php

// Grab the editor for the file and the size of the original image.
$filename = '/Users/tommcfarlin/Projects/acme/wp-content/uploads/2018/06/original-image.jpg';
if (!file_exists($filename)) {
  return;
}

$editor = wp_get_image_editor( $filename, array() );
if (is_wp_error($editor)) {
   // handle the problem however you deem necessary.
}

Olettaen, että virhettä ei kuitenkaan ole, voit alkaa muuttaa kuvan kokoa.

Kuvan koon muuttaminen

Onneksi tämä on asia, joka on helppo tehdä. Tarvitset kolme tietoa:

  1. leveys,
  2. korkeus,
  3. ja haluatko rajata kuvan vai et.

Kokemukseni mukaan kuvan rajaaminen on melkein aina parempi kuin ei, koska se välttää omituisen venymisen tai vääristymisen oudoilla kuvasuhteilla.

Kun muutan kuvan kokoa, haluan aina saada kuvan nykyisen koon ja sitten luoda kertoimen avulla uudet mitat, joilla haluan muuttaa kuvan kokoa.

Oletetaan esimerkiksi, että minulla on kuva ja haluan muuttaa leveyttä 40 % ja korkeutta 30 %. Tätä varten minun on:

  1. saada nykyisen kuvan koko,
  2. käytä uutta leveyttä ja korkeutta kuvan koon muuttamiseen.

Ohjelmallisesti se toimisi seuraavasti:

<?php

// Grab the editor for the file and the size of the original image.
$filename = '/Users/tommcfarlin/Projects/acme/wp-content/uploads/2018/06/original-image.jpg';
if (!file_exists($filename)) {
  return;
}

$editor = wp_get_image_editor( $filename, array() );
if (is_wp_error($editor)) {
   // Handle the problem however you deem necessary.
}

// Get the dimensions for the size of the current image.
$dimensions = $editor->get_size();
$width = $dimensions['width'];
$height = $dimensions['height'];

// Calculate the new dimensions for the image.
$newWidth = 0.4 * $width;
$newHeight = 0.3 * $height;

// Resize the image.
$result = $editor->resize($newWidth, $newHeight, true);

Tarpeeksi helppo seurata, eikö?

Kuvan tallentaminen

Lopuksi jäljellä on vain kuvan tallentaminen. Tässä tapauksessa kuva kirjoitetaan lataushakemistoon (ja yleensä WordPressin tarjoamaan vuoteen ja kuukauteen).

<?php

// Grab the editor for the file and the size of the original image.
$filename = '/Users/tommcfarlin/Projects/acme/wp-content/uploads/2018/06/original-image.jpg';
if (!file_exists($filename)) {
  return;
}

$editor = wp_get_image_editor( $filename, array() );
if (is_wp_error($editor)) {
   // handle the problem however you deem necessary.
}

// Get the dimensions for the size of the current image.
$dimensions = $editor->get_size();
$width = $dimensions['width'];
$height = $dimensions['height'];

// Calculate the new dimensions for the image.
$newWidth = 0.4 * $width;
$newHeight = 0.3 * $height;

// Resize the image.
$result = $editor->resize($newWidth, $newHeight, true);

// If there's no problem, save it; otherwise, print the problem.
if (!is_wp_error($result)) {
  $editor->save($editor->generate_filename());
} else {
   // Handle the problem however you deem necessary.
}

Näet sitten lopullisen version muutettuna (ja nimettynä asianmukaisesti) sen tulosteen perusteella.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja