Phpimg resizer: créateurs d'images tous formats pour afficher dans toutes les dimensions désirées

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 769 fois - Téléchargée 35 fois

Contenu du snippet

Source php utilisables sur les serveurs apache/php 4 et 5 avec la librairie GD activée.
- arguments pour charger la page: image.php?file=imagefileURL&type=format&w=largeur&h=hauteur

- les nouvelles dimensions de l'image sont ajustées aux dimensions originales (pas de distortions)
(il est donc possible d'ommettre les arguments largeur et hauteur indépendamment :) )

Source / Exemple :


<?php
/***** arguments pour charger la page: image.php?file=imagefileURL&type=format&w=largeur&h=hauteur ******/
if(file_exists($f = $_GET['file'])) {

/** retourne les nouvelles dimensions de l'image ajustée aux dimensions originales (pas de distortions)*/
function getSize($im) {
	if(isset($_GET['w'])) $w = $_GET['w'];
	if(isset($_GET['h'])) $h = $_GET['h'];
	if(!isset($w) || $w == 0) $w = imagesx($im)/imagesy($im) * $h;
	if(!isset($h) || $h == 0) $h = imagesy($im)/imagesx($im) * $w;
	if($w == 0 && $h == 0) { $w = imagesx($im); $h = imagesy($im); }
	return array($w,$h);
}
// les formats supportés par php 4 et 5
if (function_exists("imagegif") && $_GET['type'] == 'gif') {
	$im = imagecreatefromgif($f);
	$s = getSize($im); $im_r = imagecreatetruecolor($s[0], $s[1]); 
   // ici la couleur transparente sera le noir de l'image vide true colors
$trans = imagecolorallocate($im_r,0,0,0);
imagecolortransparent($im_r,$trans);
 // une fois resamplée l'image recompose avec un fond transparent pour garder l'image départ intacte!
	imagecopyresampled($im_r, $im, 0, 0, 0, 0, $s[0], $s[1], imagesx($im), imagesy($im));
	header("Content-type: image/gif");
	imagegif($im_r);
}
elseif (function_exists("imagejpeg") && $_GET['type'] == 'jpeg') {
	$im = imagecreatefromjpeg($f);
	$s = getSize($im); $im_r = imagecreatetruecolor($s[0], $s[1]);
	imagecopyresampled($im_r, $im, 0, 0, 0, 0, $s[0], $s[1], imagesx($im), imagesy($im));	
	header("Content-type: image/jpeg");
	imagejpeg($im_r, "", 80);
}
elseif (function_exists("imagepng") && $_GET['type'] == 'png') {
	$im = imagecreatefrompng($f);
	$s = getSize($im); $im_r = imagecreatetruecolor($s[0], $s[1]); $trans = imagecolorallocate($im_r,0,0,0);
	imagecolortransparent($im_r,$trans); // comme le format gif transparence
	imagecopyresampled($im_r, $im, 0, 0, 0, 0, $s[0], $s[1], imagesx($im), imagesy($im));	
	header("Content-type: image/png");
	imagepng($im_r);
} elseif (function_exists("imagewbmp") && $_GET['type'] == 'wbmp') {
	$im = imagecreatefrowbmp($f);
	$s = getSize($im); $im_r = imagecreatetruecolor($s[0], $s[1]);
	imagecopyresampled($im_r, $im, 0, 0, 0, 0, $s[0], $s[1], imagesx($im), imagesy($im));	
	header("Content-type: image/vnd.wap.wbmp");
	imagewbmp($im_r);
    } // endif _get(type) 

} else {
	die("Pas de fichier ".$_GET['file']." sur ce serveur");
}// endif file_exists()
?>

Conclusion :


Au final il faut noter la composition d'une image true color pour applique l'image originale resamplée.

A voir également

Ajouter un commentaire

Commentaires

broumbroum
Messages postés
39
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
10 septembre 2007

il faut noter la différence pour les images gif et png qui peuvent inclure un fond transparent, et donc il y a besoin de spécifier un fond transparent avec l'image resamplée: avant de fixer le bug, je créais un rectangle d'un couleur quelconque à rendre transparent, puis j'ai finalement corrigé avec une indication importante sur les images true color: le fond de l'image créée est originalement noir, donc il suffit de fixer la transparence sur la couleur noire de fond avant de copiée l'image redimensionnée (nb. celle-ci n'est pas affectée par la commande précédente de transparence!)
wizard512
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

Heu, j'avais pas tous vus, mais moi je l'aurais plutot remixé
comme sa :

############################################################

<?php

/***** arguments pour charger la page: image.php?file=imagefileURL&type=format&w=largeur&h=hauteur ******/

if( !isset ( $_GET[ 'file' ] ) or empty( $_GET[ 'file' ] ) )
{
die( "TON MESSAGE D'ERREUR" );
}

$f = $_GET['file'];

/** retourne les nouvelles dimensions de l'image ajustée aux dimensions originales (pas de distortions)*/

function getSize( $im )
{
$h = imagesy( $im ); // Si ....
$w = imagesx( $im ); // Variable inéxistante

if( !isset( $_GET[ 'w' ] ) or !is_numeric( $_GET[ 'w' ] ) or empty( $_GET[ 'w' ] ) )
{
$w = imagesx( $im ) / imagesy( $im ) * $h;
}
else
{
$w = $_GET[ 'w' ];
}

if( !isset( $_GET[ 'h' ] ) or !is_numeric( $_GET[ 'h' ] ) or empty( $_GET[ 'h' ] ) )
{
$h = imagesy( $im ) / imagesx( $im ) * $w;
}
else
{
$h = $_GET[ 'h' ];
}

return array( $w , $h );
}

// les formats supportés par php 4 et 5
if ( function_exists( "imagegif" ) && $_GET[ 'type' ] == 'gif' ) {
$im = imagecreatefromgif( $f );
$s = getSize( $im );
$im_r = imagecreate( $s[ 0 ], $s[ 1 ] );
$trans = imagecolorallocate( $im_r , 255 , 99 , 140 );
imagefilledrectangle( $im_r , 0 , 0 , $s[ 0 ], $s[ 1 ], $trans );
imagecolortransparent( $im_r , $trans );
imagecopyresampled( $im_r, $im, 0, 0, 0, 0, $s[ 0 ], $s[ 1 ], imagesx( $im ), imagesy( $im ) );
header( "Content-type: image/gif" );
imagegif( $im_r );
}
elseif ( function_exists( "imagejpeg" ) && $_GET[ 'type' ] == 'jpeg' )
{
$im = imagecreatefromjpeg( $f );
$s = getSize( $im );
$im_r = imagecreatetruecolor( $s[ 0 ], $s[ 1 ] );
imagecopyresampled( $im_r, $im, 0, 0, 0, 0, $s[ 0 ], $s[ 1 ], imagesx( $im ), imagesy( $im ) );
header( "Content-type: image/jpeg" );
imagejpeg( $im_r, "", 80 );
}
elseif ( function_exists( "imagepng" ) && $_GET['type'] == 'png' )
{
$im = imagecreatefrompng( $f );
$s = getSize( $im );
$im_r = imagecreate( $s[ 0 ], $s[ 1 ] );
$trans = imagecolorallocate( $im_r , 255 , 99 , 140 );
imagefilledrectangle( $im_r , 0 , 0 , $s[ 0 ], $s[ 1 ], $trans );
imagecolortransparent( $im_r, $trans );
imagecopyresampled( $im_r, $im, 0, 0, 0, 0, $s[ 0 ], $s[ 1 ], imagesx( $im ), imagesy( $im ) );
header( "Content-type: image/png" );
imagepng( $im_r );
} elseif ( function_exists( "imagewbmp" ) && $_GET['type'] == 'wbmp' )
{
$im = imagecreatefrowbmp( $f );
$s = getSize( $im );
$im_r = imagecreatetruecolor( $s[ 0 ], $s[ 1 ] );
imagecopyresampled( $im_r, $im, 0, 0, 0, 0, $s[ 0 ], $s[ 1 ], imagesx( $im ), imagesy( $im ) );
header( "Content-type: image/vnd.wap.wbmp" );
imagewbmp( $im_r );
} else {
die( "Pas de support graphique avec PHP sur ce serveur" );
}
?>

##############################################################

Bon, ok j'avous ya pas tros de différence, mais bon, .... ^^'

~~ DotWizard512 ~~
wizard512
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

Il faudrait comme même vérifier l'existance de "$_GET[ 'file' ]",
nn..?! ^^'
Parceque sinon sa risque d'affiché des erreurs
si tu tombe sur un p'tit fouineur....

~~ DotWizard512 ~~
TheSin
Messages postés
331
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
10 février 2009

Mince ... moi qui croyait avoir enfin trouvé une source pour charger du bitmap ...... lol
(bin oui, y'a bien écrit tous formats)

à part ca, c'est pas mal, et ca reste classique, ça peut servir pour des débutants dans GD ;-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.