Kui olete kunagi pidanud töötama WordPressis piltide programmilise suuruse muutmisega, olete võib-olla kohanud funktsiooni image_resize.
Lisaks võite teada, et see on aegunud (arvestades, et see kuvatakse ekraani ülaosas):
See funktsioon on aegunud. Kasutage selle asemel wp_get_image_editor().
Ja selle amortisatsiooni tõttu, nagu see kehtib kõigi nende kohta, kes teevad head tööd funktsionaalsuse mahajätmisega, pole see ilma selle asendamiseta.
Sel juhul räägime WP pildiredaktorist. See on WordPressi klass, mida saame kasutada piltide programmilise suuruse muutmiseks samade toimingute tegemiseks, mida kunagi saime kasutada algse funktsiooniga.
Selguse huvides ei ole see konkreetne postitus täielik õpetus selle kohta, kuidas WP_Image_Editor.
Selle asemel on see lihtne juhend selle kohta, kuidas seda kasutada piltide suuruse muutmiseks aegunud funktsiooni asemel, koos selgitustega, kuidas käsitleda juhtumeid, kus võib esineda vigu.
Kasutatava pildi leidmine
Sõltuvalt sellest, mida teete, võib teil olla võimalik pildi failinimi hankida WordPressist endast; aga selle näite puhul kavatsen ma lihtsalt kõvasti kodeerida faili tee.
See on lihtsaim viis selgitada, kuidas kasutada klassi versus tangensile minekut, kuidas programmiliselt pilti tuua, saada selle tee, saata see toimetajaklassi ja nii edasi.
Oletame, et pildile antud tee on umbes selline:
<?php
$filename = '/Users/tommcfarlin/Projects/acme/wp-content/uploads/2018/06/original-image.jpg';
if (!file_exists($filename)) {
return;
}
Seda kasutades salvestame selle muutujas, mille saame edastada mõnele teisele funktsioonile juhuks, kui tahame algset faili mitu korda kasutada.
Pildiredaktori eksemplari hankimine
Järgmiseks peate hankima pildiredaktori klassi eksemplari, et saaksite ülaltoodud teel asuva pildiga opereerida. Kõige lihtsamal kujul pole see midagi muud kui failinime edastamine funktsiooni ja seejärel argumentide massiivi.
Selles postituses ei huvita ma argumentide massiivi – ainult redaktori eksemplari hankimist, mille abil saan pildi suurust muuta.
Nimetatud redaktori eksemplari haaramiseks tehke lihtsalt järgmist.
<?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() );
See tagastab kas eksemplari redaktori eksemplari **[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)**(koos veateate ja muu teabega, mida saate probleemi tuvastamiseks kasutada). Alati on hea kontrollida, kas tagastatud väärtus on viga, ja peatada kõik tulevased toimingud.
<?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.
}
Kui aga eeldada, et viga pole, võite alustada tööd pildi suuruse muutmisega.
Pildi suuruse muutmine
Õnneks on seda lihtne teha. Teil on vaja kolme teavet:
- laius,
- kõrgus,
- ja kas soovite pilti kärpida või mitte.
Minu kogemuse kohaselt on pildi kärpimine peaaegu alati parem kui mitte, sest see väldib kummalist venitamist või moonutamist paaritu kuvasuhte korral.
Pildi suuruse muutmisel meeldib mulle alati saada pildi praegune suurus ja seejärel luua kordaja abil uued mõõtmed, mille võrra soovin pildi suurust muuta.
Oletame näiteks, et mul on pilt ja ma tahan laiust 40% ja kõrgust 30% võrra muuta. Selleks pean ma:
- saada praeguse pildi suurus,
- kasutage pildi suuruse muutmiseks uut laiust ja kõrgust.
Programmiliselt teeksite seda järgmiselt.
<?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);
Piisavalt lihtne jälgida, kas pole?
Pildi salvestamine
Lõpuks jääb üle vaid pilt salvestada. Sel juhul kirjutatakse pilt üleslaadimiste kataloogi (ja tavaliselt aasta ja kuu, mille WordPress pakub).
<?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.
}
Seejärel näete lõpliku versiooni suurust muudetud (ja sobiva nimega) selle väljundi põhjal.