Ridimensiona immagine in PHP
- Carica l’immagine prima del ridimensionamento
-
imagecopyresized()
in PHP -
imagecopyresampled()
in PHP -
imagescale()
in PHP
In questo articolo tutorial, discuteremo del ridimensionamento di un’immagine in PHP.
Carica l’immagine prima del ridimensionamento
Prima di ridimensionare un’immagine, dobbiamo prima caricarla come risorsa immagine all’interno dello script. Non è lo stesso che usare funzioni come file_get_contents()
per ottenere il contenuto del file immagine. Per caricare il file, dobbiamo utilizzare funzioni come imagecreatefromjpeg()
, imagecreatefrompng()
e imagecreatefromgif()
, tra le altre. A seconda del tipo di immagine che ridimensioneremo, utilizzeremo una funzione diversa di conseguenza.
getimagesize()
in PHP
Dopo aver caricato l’immagine, utilizziamo getimagesize()
per calcolare la larghezza, l’altezza e il tipo dell’immagine di input. Questa funzione restituisce un elenco di elementi, in cui la larghezza e l’altezza dell’immagine sono memorizzate negli indici 0 e 1, rispettivamente, e le costanti IMAGETYPE_XXX
sono memorizzate nell’indice 2. Useremo il valore di questa costante restituita per capire cosa tipo di immagine da usare e quale caratteristica usare.
<?php
function load_image($filename, $type) {
$new = 'new34.jpeg';
if( $type == IMAGETYPE_JPEG ) {
$image = imagecreatefromjpeg($filename);
echo "here is jpeg output:";
imagejpeg($image, $new);
}
elseif( $type == IMAGETYPE_PNG ) {
$image = imagecreatefrompng($filename);
echo "here is png output:";
imagepng($image,$new);
}
elseif( $type == IMAGETYPE_GIF ) {
$image = imagecreatefromgif($filename);
echo "here is gif output:";
imagejpeg($image, $new);
}
return $new;
}
$filename = "panda.jpeg";
list($width, $height,$type) = getimagesize($filename);
echo "Width:" , $width,"\n";
echo "Height:", $height,"\n";
echo "Type:", $type, "\n";
$old_image = load_image($filename, $type);
?>
Input_Immagine:
Produzione:
Width:225
Height:225
Type:2
here is jpeg output:
Output_immagine:
Entrambe sono le stesse immagini perché in questa sezione carichiamo solo l’immagine e calcoliamo la dimensione dell’immagine originale.
imagecopyresized()
in PHP
imagecopyresized()
prende un’area oblunga di larghezza src_w
e altezza src_h
da src_image
alla posizione (src_x,src_y)
e la colloca in un’area rettangolare dell’immagine di destinazione alla posizione (dst_x,dst_y)
. È una funzione integrata in PHP.
<?php
// File and new size
$filename = 'panda.jpeg';
$percent = 0.5;
// Content type
header('Content-Type: image/jpeg');
// Get new sizes
list($width, $height, $type) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$type = $list[2];
echo $type;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output
imagejpeg($thumb,'new.jpeg');
?>
Input_Immagine:
Output_immagine:
Come discusso sopra, la funzione imagecopyresize()
accetta dieci parametri, che sono elencati di seguito.
Parametri | Spiegazione |
---|---|
$dst_image |
La risorsa immagine di destinazione |
$src_image |
La risorsa dell’immagine di origine |
$dst_x |
La coordinata x del punto di destinazione |
$dst_y |
La coordinata y del punto di destinazione |
$src_x |
La coordinata x del punto sorgente |
$src_y |
La coordinata y del punto sorgente |
$dst_w |
La larghezza di destinazione |
$dst_h |
L’altezza della destinazione |
$src_w |
La larghezza della sorgente |
$src_h |
L’altezza della sorgente |
Restituisce il valore booleano TRUE in caso di successo o FALSE in caso di fallimento.
imagecopyresampled()
in PHP
imagecopyresampled()
copia una porzione oblunga di un’immagine su un diverso, interpolando perfettamente i valori dei pixel per ridurre la dimensione di un’immagine, mantenendo un alto livello di chiarezza.
Funziona in modo simile alla funzione imagecopyresized()
, con l’ulteriore vantaggio di campionare l’immagine oltre a ridimensionarla.
<?php
// The file
$filename = 'panda.jpeg';
$percent = 2;
// Content type
header('Content-Type: image/jpeg');
// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
imagejpeg($image_p, 'resampled1.jpeg', 100);
?>
Input_Immagine:
Output_immagine:
La funzione imagecopyresampled()
accetta dieci parametri diversi.
Parametri | Spiegazione |
---|---|
$image_p |
Determina l’immagine di destinazione. |
$image |
Determina l’immagine di origine. |
$x_dest |
Determina la coordinata x dell’immagine di destinazione. |
$y_dest |
Determina la coordinata y dell’immagine di destinazione. |
$x_src |
Determina la coordinata x dell’immagine sorgente. |
$y_src |
Determina la coordinata y dell’immagine sorgente. |
$wid_dest |
Determina la larghezza della nuova immagine. |
$hei_dest |
Determina l’altezza della nuova immagine. |
$wid_src |
Determina la larghezza della vecchia immagine. |
$wid_src |
Determina l’altezza della vecchia immagine. |
Nota: possiamo anche eseguire il ricampionamento in modo proporzionale, il che è possibile dando larghezza e altezza della dest_image
invece della percentuale.
imagescale()
in PHP
Si specifica la dimensione invece di definire la larghezza o l’altezza dell’ultima immagine. Se desideri che la nuova dimensione dell’immagine sia metà della prima immagine, imposta la dimensione su 0,8. Ecco che il codice di esempio per ridimensionare un’immagine di un dato fattore preservando il rapporto.
Moltiplichiamo la larghezza e l’altezza originali dell’immagine con la scala specificata all’interno della funzione scale image()
.
ecco il suo esempio:
<?php
function load_image($filename, $type) {
if( $type == IMAGETYPE_JPEG ) {
$image = imagecreatefromjpeg($filename);
}
elseif( $type == IMAGETYPE_PNG ) {
$image = imagecreatefrompng($filename);
}
elseif( $type == IMAGETYPE_GIF ) {
$image = imagecreatefromgif($filename);
}
return $image;
}
function scale_image($scale, $image, $width, $height) {
$new_width = $width * $scale;
$new_height = $height * $scale;
return resize_image($new_width, $new_height, $image, $width, $height);
}
function resize_image($new_width, $new_height, $image, $width, $height) {
$image12 = 'hello.jpeg';
$new_imag = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($new_imag, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
return imagejpeg($new_imag, $image12);
}
$filename = "panda.jpeg";
list($width, $height, $type) = getimagesize($filename);
$old_image = load_image($filename, $type);
$image_scaled = scale_image(0.8, $old_image, $width, $height);
?>
Input_Immagine:
Output_immagine:
A parte questo, PHP ha una funzione integrata che ti consente di ridimensionare un’immagine alla larghezza e all’altezza specificate.
Vedi il codice di esempio.
<?php
$out_image = "sca.jpeg";
$image_name ="panda.jpeg";
// Load image file
$image = imagecreatefromjpeg($image_name);
// Use imagescale() function to scale the image
$img = imagescale( $image, 500, 400 );
header("Content-type: image/jpeg");
imagejpeg($img,$out_image);
?>
Input_Immagine:
Output_Immagine: