✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Ändra storlek på bild i PHP med hjälp av interventionsbildbibliotek

21

Letar du efter hur du ändrar storlek på bilder i PHP? När vi arbetar med webbapplikationen måste vi skapa olika miniatyrversioner av originalbilden. Miniatyrbilden är den ändrade storleken på din ursprungliga bild. I den här artikeln studerar vi hur man laddar upp och ändrar storlek på bilder i PHP.

Varför ska vi ändra storlek på bilder?

På webbplatsen finns det flera scenarier där vi behöver visa en kortversion av en stor bild. Ett populärt exempel är bildgalleriet. I galleriet brukade vi visa en lista med små bilder. När en användare klickar på den lilla bilden öppnas den stora bilden i popup-fönstret. Ett annat exempel är att visa relaterade artiklar där vi visar små bilder tillsammans med titeln och beskrivningen av ett inlägg.

I dessa scenarier måste vi skapa en liten bild (miniatyrbild) med vår ursprungliga bild. En liten miniatyrbild minskar storleken på dina sidor. Eftersom du använder en liten miniatyrbild kräver webbläsaren låg bandbredd för att ladda bilden. Det kommer att lägga till några fördelar på webbplatsen. Några av dem är:

  • Förbättrar serverprestanda
  • Minska bandbredd
  • Förbättra sidhastigheten

Med det sagt, låt oss ta en titt på hur du kan ändra storlek på bilden i PHP.

Komma igång

Intervention Image är ett bibliotek med öppen källkod som fungerar som ett verktyg för bildförändring. Under huven använder Intervention Image GD Library och Imagick för bildbehandling och manipulation.

För att komma igång måste du installera Intervention Image-biblioteket i din applikation. Jag rekommenderar att du använder Composer för installation av ett bibliotek.

Öppna terminalen i din projektkatalog och kör kommandot nedan.

composer require intervention/image

När du har installerat biblioteket måste du inkludera dess miljö i din applikation. För detta, inkludera nedanför två rader till PHP-filen.

<?php
// include composer autoload
require 'vendor/autoload.php';
  
use InterventionImageImageManagerStatic as Image;

För att ladda upp och ändra storlek på bilden behöver vi ett formulär där man kan bläddra i bilden och trycka på knappen Skicka. Använd nedanstående HTML som innehåller filinmatningen och en skicka-knapp.

<form method="post" enctype="multipart/form-data">
    <p><input type="file" name="image" /></p>
    <input type="submit" name="submit" value="Submit">
</form>

Ändra storlek på bild i PHP med hjälp av interventionsbild

Vi har installerat biblioteket och skapat ett formulär. Därefter måste vi ladda upp och ändra storlek på bilden i farten. Jag ska skapa två kataloger uploadsoch thumbnails. I uploadsmappen lagrar vi originalbilden. Miniatyrversionen av bilden lagras i thumbnailskatalogen.

Använd koden nedan som lagrar originalversionen och miniatyrversionen av bilden i uploadsrespektive thumbnailskataloger.

<?php
require 'vendor/autoload.php';
  
use InterventionImageImageManagerStatic as Image;
 
$allowed_mime_type = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
 
if (isset($_POST['submit'])) {
 
    if (in_array($_FILES['image']['type'], $allowed_mime_type)) {
 
        if (!file_exists('uploads')) {
            mkdir('uploads', 0755);
        }
 
        $filename = time().'_'.$_FILES['image']['name'];
        $filepath = 'uploads/'. $filename;
        move_uploaded_file($_FILES['image']['tmp_name'], $filepath);
 
        if (!file_exists('uploads/thumbnails')) {
            mkdir('uploads/thumbnails', 0755);
        }
 
        $thumbnailpath = 'uploads/thumbnails/'. $filename;
        $img = Image::make($filepath);
        $img->resize(300, null, function ($constraint) {
            $constraint->aspectRatio();
        });
        $img->save($thumbnailpath);
    }
}

I ovanstående kod passerade jag bredden som 300 och ändrade storlek på bilden genom att behålla deras bildförhållande. Du kan skicka breddvärdet enligt dina krav. Det rekommenderas att behålla bildförhållandet när du ändrar storlek på bilden. Med bildformat sträcker sig inte bilden. Men om du letar efter en hård skörd byter du ut nedanstående rader

$img->resize(300, null, function ($constraint) {
    $constraint->aspectRatio();
});

Med

$img->resize(300, 150)->save($thumbnailpath);

Slutsats

I den här handledningen studerade vi hur man ändrar storlek på bilder genom att bibehålla bildformatet. Vi skrev också en kod som kommer att beskära bilden hårt. Intervention Bildbibliotek ger några fler alternativ för en resizemetod. Du kan läsa mer om det i deras dokumentation.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer