PHP per ridurre automaticamente file JPG

supernuz

Nuovo Utente
10 Ott 2012
9
0
0
Ciao a tutti,

cerco il modo per avere un PHP che riduce i file di una cartella "da_ridurre" ad 640x480 e li salva nella cartella "immagini" (tutto in locale).
Auesto PHP sarebbe la soluzione ideale.

Chi mi aiuta?

PS: Grande "borgo italia", moderatore NUMBER ONE!!! ;)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prova questo, è un ruadattamento di uno script che avevo fatto per un altro utente.
la carichi e gli dai il nome che vuoi e poi lo lanci.
verifica di avere le due cartelle "da_ridurre/" e "immagini/".
non ho messo alcuni controlli, ma penso che tu non ti voglia divertire a mandarti tutto in pallino.
PHP:
<?php
/*
ATTENZIONE: 
1. verificare i kb dell'immagine originale (meglio sotto i 1000 kb) altrimenti è facile che php va hout memory
2. non verifica l'orientamento dell'immagine, quindi devi verificare tu che l'immagine sia diritta
3. non cambia nome all'immagine e quindi se in destinazione esistente, sovrascive, per non sovrascivere da mod la riga rename
4. funziona solo per formato jpg
*/
function riduci_carica($nome_file){ 
	$cart_p="da_ridurre/";//cartella di partenza
	$cart_d="immagini/";//cartella di destinazione
    list($w_orig, $h_orig) = getimagesize($cart_p.$nome_file);//leggo larghezza e altezza dell immagine originale
	if($w_orig == 0 || $h_orig ==0){//se rileva 0 l'immagine non è trattabile
		echo "immagnine non compatibile <br />";
	}else{
    	$max_w = 640;//definisco le misure massime a cui voglio ridurre
		$max_h = 480; 
		$ratio = @min($max_w/$w_orig,$max_h/$h_orig);//cerco il rapporto minimo
    	if($ratio < 1 ){
			$w_rid = (int)($w_orig*$ratio); //calcolo le dimensioni a cui ridurre
			$h_rid  =(int)($h_orig*$ratio);
    		$tn = imagecreatetruecolor($w_rid, $h_rid); 
    		$image = imagecreatefromjpeg($cart_p.$nome_file); 
    		imagecopyresampled($tn, $image, 0, 0, 0, 0, $w_rid, $h_rid , $w_orig, $h_orig); 
    		imagejpeg($tn, $cart_d.$nome_file, 90);
		}
		echo "trattato: $nome_file<br>";
		@rename($cart_p.$nome_file, $cart_d.$nome_file);// sposta nella cartella di destinazione (attenzione sovrascrive se esiste)
		//per svuotare la cartella di partenza in automatico dei file trattat (altrimenti commentare la riga)
		@unlink($cart_p.$nome_file);
	}
}//fine function riduci_ricarica 
//**************************************
$imm_da_spost=array_merge(glob("da_ridurre/*.jpg"),glob("da_ridurre/*.JPG"));//legge i file da cartella di partenza
foreach($imm_da_spost as $immagine){
	$immagine=basename($immagine);
	riduci_carica($immagine);
}
echo "fatto";
?>
se ci sono problemi, posta
 

supernuz

Nuovo Utente
10 Ott 2012
9
0
0
Ciao borgo italia,

grazie. Ho provato ma non funziona. Mi sposta i file da una cartella all'altra ma non li ridimensione.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ho ritestato, ma a me funzia
mi riduce le immagini di "da_ridurre" (1280x960) a "immagini" (640x480) e le cancella da "da_ridurre".
per prova in "da_ridurre" ho messo anche una da 400x300 e quella rimane tale e quale
comunque mi sono accorto che conviene mettere all'inizio dello script l'istruzione ini_set
PHP:
<?php
ini_set('memory_limit', '100M');//aggiungi questa riga
/*
ATTENZIONE: ......
*/
?>
questo ti permette di ridurre immagini più grandi. fai una prova e sappimi dire
eventualmente ti riposto lo script
 

supernuz

Nuovo Utente
10 Ott 2012
9
0
0
Niente da fare. le ho provate tutte. File diversi, con estensione sia JPG che jpg, foto o immagini di tutte le risoluzioni. Non le modifica.
Il codice è questo:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<?php 
ini_set('memory_limit', '100M');//aggiungi questa riga 
/* 
ATTENZIONE:  
1. verificare i kb dell'immagine originale (meglio sotto i 1000 kb) altrimenti è facile che php va hout memory 
2. non verifica l'orientamento dell'immagine, quindi devi verificare tu che l'immagine sia diritta 
3. non cambia nome all'immagine e quindi se in destinazione esistente, sovrascive, per non sovrascivere da mod la riga rename 
4. funziona solo per formato jpg 
*/ 
function riduci_carica($nome_file){  
    $cart_p="da_ridurre/";//cartella di partenza 
    $cart_d="ridotte/";//cartella di destinazione 
    list($w_orig, $h_orig) = getimagesize($cart_p.$nome_file);//leggo larghezza e altezza dell immagine originale 
    if($w_orig == 0 || $h_orig ==0){//se rileva 0 l'immagine non è trattabile 
        echo "immagnine non compatibile <br />"; 
    }else{ 
        $max_w = 640;//definisco le misure massime a cui voglio ridurre 
        $max_h = 480;  
        $ratio = @min($max_w/$w_orig,$max_h/$h_orig);//cerco il rapporto minimo 
        if($ratio < 1 ){ 
            $w_rid = (int)($w_orig*$ratio); //calcolo le dimensioni a cui ridurre 
            $h_rid  =(int)($h_orig*$ratio); 
            $tn = imagecreatetruecolor($w_rid, $h_rid);  
            $image = imagecreatefromjpeg($cart_p.$nome_file);  
            imagecopyresampled($tn, $image, 0, 0, 0, 0, $w_rid, $h_rid , $w_orig, $h_orig);  
            imagejpeg($tn, $cart_d.$nome_file, 90); 
        } 
        echo "trattato: $nome_file<br>"; 
        @rename($cart_p.$nome_file, $cart_d.$nome_file);// sposta nella cartella di destinazione (attenzione sovrascrive se esiste) 
        //per svuotare la cartella di partenza in automatico dei file trattat (altrimenti commentare la riga) 
        @unlink($cart_p.$nome_file); 
    } 
}//fine function riduci_ricarica  
//************************************** 
$imm_da_spost=array_merge(glob("da_ridurre/*.jpg"),glob("da_ridurre/*.JPG"));//legge i file da cartella di partenza 
foreach($imm_da_spost as $immagine){ 
    $immagine=basename($immagine); 
    riduci_carica($immagine); 
} 
echo "fatto"; 
?> 
</head>

<body>
</body>
</html>

Ho solo modificato la cartella di destinazione ma non cambia. Devo aver installato qualche cosa di specifico?
Uso XP.

Carlo.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
cioa
ho fatto il copia/incolla dello script che mi hai postato e a me funzia perfettamente.
verifica di aver scritto giusto i nomi delle tue cartelle. se controlli le immagini con lo slide che hai, verifica anche li di aver messo giusto i nomi che non vada a pescarti le immagini da un'altra parte (es nella vecchia cartella immagini).
anch'io uso il vecchio xp
 
Discussioni simili
Autore Titolo Forum Risposte Data
Delemir78 [PHP] Problema per ridurre delle immagini e spostare i files in cartelle PHP 5
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
A Aiuto per pagina php PHP 0
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
N Mysql_result per PHP 7 PHP 2
L Aiuto per programma web php/mySQL PHP 2
M Problema con php per calcolo costo percentuale PHP 7
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
F [PHP] Aggiungere ruolo per accedere alle pagine PHP 2
motleyrulez Chiamata ajax per tabella php PHP 3
U PHP bottone per invio mail o ritorno al form PHP 15
F [PHP] Pagina conta verghe per carpenteria PHP 15
Tommy03 Variabile PHP per impostare una proprietà CSS PHP 2
Alex_70 actor film query per php PHP 1
T [PHP] Creare Honeypot per form contatti PHP 10
D [PHP] editor per file doc o rtf direttamente online PHP 0
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
E [PHP] creare temporary table per dati da xml PHP 2
M [PHP] Modi per fare redirect 301 da http a https PHP 12
romeocharly [PHP] Script per rinominare in automatico le immagini inviate da ftp PHP 0
R [PHP] creare pagina profilo per ogni utente PHP 4
A [PHP] Script con array con numeri che iniziano per 00 PHP 2
L [PHP] controllo dimensione immagine per il resize PHP 2
D [Javascript] pulsanti per comandi shell con php e ajax Ajax 7
TpD [PHP] Script per organizzazione presenza eventi PHP 3
G [PHP] Revisione codice per registrazione PHP 8
M [PHP] Framework per form complessi (configuratore prodotto) PHP 6
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
C [PHP] Come realizzare un tema wordpress per monetizzarlo?e dove testarlo gratis? PHP 3
spider81man [PHP] Pulsante SUBMIT per download diretto dei file PHP 9
spider81man [PHP] Alert Box per confermare Inserimento o Cancellazione dato. PHP 4
webmachine [PHP] Script per censurare parole PHP 4
F [PHP] gestione meteo manuale per un gioco di ruolo PHP 1
A [PHP] Recuperare indice per inserirlo in un'altra tabella PHP 4
E [PHP] $_FILES per file multipli su Aruba PHP 6
M [PHP] Script per controllo disponibilitá negozio in citta PHP 4
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
P [PHP] Limitare login ad un solo utente per volta PHP 12
L [PHP] ordinare per data PHP 3
C [PHP] Software per classifiche PHP 3
D [PHP] [RETRIBUITO] cercasi esperto programmatore per realizzare applicazione in html e codice iframe PHP 0
I [PHP] CURL per accesso ad area riservata PHP 6
macus_adi Classe PHP per la Geolocalizzazione del visitatore Snippet PHP 0
M [PHP] o [APACHE] - Filtro geo per accesso sito PHP 6
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
E [PHP] Sso unico accesso per più siti PHP 8

Discussioni simili