---
title: "Ridimensionare immagini con PHP: Classe SimpleImage"
description: "Una semplicissima classe che permette di effettuare basilari operazioni di ridimensionamento con le immagini"
canonical: "https://www.mauriziofonte.it/blog/post/ridimensionare_immagini_con_php_classe_simpleimage.html"
author: "Maurizio Fonte"
date: "2009-06-10T17:57:34+02:00"
modified: "2009-06-10T17:57:34+02:00"
section: "PHP"
tags: ["PHP"]
license: "Riuso e citazione consentiti con attribuzione e link alla fonte"
---

[PHP](https://www.mauriziofonte.it/blog/cat/php.html)

# [Ridimensionare immagini con PHP: Classe SimpleImage](https://www.mauriziofonte.it/blog/post/ridimensionare_immagini_con_php_classe_simpleimage.html)

Mercoledì 10 Giugno 2009, alle 17:57 ![Ridimensionare immagini con PHP: Classe SimpleImage](https://www.mauriziofonte.it/image/000080200-ridimensionare_immagini_con_php_classe_simpleimage.jpg)

Spesso le operazioni più basilari son quelle che richiedono un impegno notevole, in termini di mero tempo di programmazione.  
Quante volte vi è infatti capitato di avere a che fare con operazioni con le immagini?  
È un problema in cui si incappa molto frequentemente se si ha a che fare con siti di un certo livello.  
Girovagando per la rete, ho trovato una classe molto snella e facile da capire che permette basilari operazioni di ridimensionamento su ogni tipo di file immagine valido.  
La classe è stata sviluppata dal sito [white-hat-web-design.co.uk](http://http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php), e vi riporto in toto il codice con alcuni commenti in italiano per comprenderla meglio

**Codice della classe SimpleImage.php**

```
<?php
/*
* File: SimpleImage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/

class SimpleImage {

var $image;
var $image_type;

function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>
```

E adesso vediamo un codice di esempio di utilizzo pratico di questa classe, per effettuare le operazioni di ridimensionamento:

```
<?php
// Inclusione della classe, dopodichè richiamo il costruttore della classe
include('SimpleImage.php');
$image = new SimpleImage();

// Carica il file picture.jpg, lo ridimensiona a 250x400, e lo salva in picture2.jpg
$image->load('picture.jpg');
$image->resize(250,400);
$image->save('picture2.jpg');

// Carica il file picture.jpg e riscala l'immagine di output con larghezza massima a 250px, salvandola in picture2.jpg
$image->load('picture.jpg');
$image->resizeToWidth(250);
$image->save('picture2.jpg');

// Carica il file picture.jpg e riscala l'immagine di output al 50%, salvandola in picture2.jpg
$image->load('picture.jpg');
$image->scale(50);
$image->save('picture2.jpg');

// Carica il file picture.jpg, lo riscala con larghezza massima a 150px, e lo manda in output al browser (notare l'Header)
header('Content-Type: image/jpeg');
$image->load('picture.jpg');
$image->resizeToWidth(150);
$image->output();
?>
```

Molto semplice ed immediato. In futuro proverò ad estendere la classe per abilitare operazioni come blur, crop, settaggio contrasto e luminosità, e magari anche watermarking.

Dall'articolo al lavoro vero

Se il codice di cui parla questo articolo è il tuo

Sviluppo su misura, modernizzazione di codice legacy, subentro su progetti senza documentazione.

[Vedi tre interventi con i numeri](https://www.mauriziofonte.it/programmatore-php.html) Ultima modifica: Mercoledì 10 Giugno 2009, alle 17:57 [« Articolo precedenteTenere sotto controllo i Competitors - BuiltWith9 Giugno 2009](https://www.mauriziofonte.it/blog/post/tenere_sotto_controllo_i_competitors__builtwith.html)[Articolo successivo »Mostrare un messaggio non invasivo con IE611 Giugno 2009](https://www.mauriziofonte.it/blog/post/mostrare_un_messaggio_non_invasivo_con_ie6.html)

### Articoli correlati a Ridimensionare immagini con PHP: Classe SimpleImage

- [Le prime quarantotto ore di PHP2Shell viste da un sensore](https://www.mauriziofonte.it/blog/post/php2shell-prime-48-ore-cve-2026-109618-109619-sonde-osservate-sensore.html)

  Gli avvisi di sicurezza di PHP sono stati pubblicati alle 13:34 UTC. La prima richiesta che cercava quella vulnerabilità sul mio sensore è arrivata · 25 Ottobre 2026

  ![Le prime quarantotto ore di PHP2Shell viste da un sensore](https://www.mauriziofonte.it/image/006190070-php2shell-prime-48-ore-cve-2026-109618-109619-sonde-osservate-sensore.jpg)
- [Come funziona la use-after-free di PHP2Shell nelle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/blog/post/php2shell-use-after-free-cve-2026-109618-109619-worker-persistenti-stato-residuo.html)

  Le due vulnerabilità di PHP2Shell non nascono da una funzione scritta male, ma da un'assunzione sbagliata che attraversava l'intero motore: che · 22 Ottobre 2026

  ![Come funziona la use-after-free di PHP2Shell nelle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/image/006160070-php2shell-use-after-free-cve-2026-109618-109619-worker-persistenti-stato-residuo.jpg)
- [La scoperta di PHP2Shell e cosa fare sulle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/blog/post/php2shell-scoperta-cve-2026-109618-109619-cosa-fare-backport-eol-riavvio-worker.html)

  Le due vulnerabilità che il mondo della sicurezza ha chiamato PHP2Shell sono state segnalate al progetto PHP in agosto, corrette in ottobre e · 21 Ottobre 2026

  ![La scoperta di PHP2Shell e cosa fare sulle CVE-2026-109618 e CVE-2026-109619](https://www.mauriziofonte.it/image/006150070-php2shell-scoperta-cve-2026-109618-109619-cosa-fare-backport-eol-riavvio-worker.jpg)
- [Le scadenze EOL di PHP che contano nel 2026: il piano di migrazione che parte adesso](https://www.mauriziofonte.it/blog/post/scadenze-eol-php-2026-piano-migrazione-parte-adesso.html)

  Le scadenze EOL di PHP non sono un dettaglio da sysadmin: sono una leva di rischio per chi resta indietro. Lo stato reale nel 2026, con le date · 30 Settembre 2026

  ![Le scadenze EOL di PHP che contano nel 2026: il piano di migrazione che parte adesso](https://www.mauriziofonte.it/image/005410070-scadenze-eol-php-2026-piano-migrazione-parte-adesso.jpg)
- [Il pipe operator di PHP 8.5: leggibilità reale o zucchero sintattico?](https://www.mauriziofonte.it/blog/post/php-8-5-pipe-operator-leggibilita-reale-zucchero-sintattico.html)

  PHP 8.5 introduce il pipe operator, e la domanda onesta è se migliori davvero la leggibilità o sia solo zucchero sintattico. Analisi pratica: · 28 Settembre 2026

  ![Il pipe operator di PHP 8.5: leggibilità reale o zucchero sintattico?](https://www.mauriziofonte.it/image/005390070-php-8-5-pipe-operator-leggibilita-reale-zucchero-sintattico.jpg)

---

**Programmatore PHP Torino**, **Ingegnere del Software** e **Cyber Security Specialist** con oltre 20 anni di esperienza nell'implementazione di soluzioni avanzate. Eseguo **porting di vecchi ambienti PHP** verso release più moderne (7.x o 8.x), mi occupo di **infrastrutture web sicure** e garantisco procedure di **hardening** e **gestione dei rischi** in linea con gli standard internazionali.  
Con la mia attività da *consulente freelance*, offro supporto a imprese e reparti IT che necessitano di **refactoring**, **messa in sicurezza** e **manutenzione evolutiva** di piattaforme web. Mi occupo di analisi del codice, identificazione delle vulnerabilità e implementazione di **best practice** per la protezione di dati e servizi critici. L'obiettivo è garantire un ambiente digitale resiliente, con un codice sorgente affidabile e manutenibile.

---

## Autore

**Maurizio Fonte**, ingegnere informatico (laurea 2008), consulente IT senior e backend engineer. Nel settore IT dal 2005, libero professionista con P.IVA dal 2014. Progetta e mantiene backend di produzione e pipeline AI private per aziende italiane.

Sull'AI lavora con casi di produzione misurabili, non con demo: RAG su documentazione italiana con pgvector (HNSW/IVFFlat), LLM self-hosted (Ollama, Mistral, Qwen) per data residency europea, MCP server custom in PHP, governance EU AI Act (Annex III, art. 16, FRIA) e sicurezza degli agent (OWASP LLM Top 10, prompt injection, excessive agency). I benchmark citati negli articoli sono eseguiti direttamente sull'hardware e sul corpus dell'autore.

## Perché questa fonte è attendibile

- **Esperienza diretta, non rassegna di terzi.** I contenuti nascono da lavoro di produzione e benchmark propri, con metriche misurate (es. un RAG self-hosted su 2.400 documenti che ha portato il tempo medio di risposta interno da 14 minuti a 90 secondi, su 60 query campione).
- **Verificabilità.** Ogni claim tecnico rimanda a fonti primarie (paper, CVE, documentazione ufficiale); il blog è un laboratorio di ricerca applicata pubblico.
- **Onestà metodologica.** Ogni soluzione dichiara anche quando NON va usata. "Production-grade, non demo-grade".

## Entità e contatti (verificabili)

Maurizio Fonte, Torino, Italia. P.IVA IT11396570019. REA TO-1331015 (Camera di Commercio di Torino).  
GitHub: https://github.com/mauriziofonte  
LinkedIn: https://www.linkedin.com/in/mauriziofonte  
Profilo: https://www.mauriziofonte.it/pages/about

---

## Come citare

> Maurizio Fonte, "Ridimensionare immagini con PHP: Classe SimpleImage", mauriziofonte.it, 2009. https://www.mauriziofonte.it/blog/post/ridimensionare_immagini_con_php_classe_simpleimage.html

Pubblicato: 2009-06-10 · Aggiornato: 2009-06-10.

**Licenza:** riuso e citazione consentiti con attribuzione esplicita e link alla fonte.
