PHPIMG RESIZER: CRÉATEURS D'IMAGES TOUS FORMATS POUR AFFICHER DANS TOUTES LES DI

TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009 - 31 oct. 2006 à 09:11
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007 - 8 nov. 2006 à 22:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40140-phpimg-resizer-createurs-d-images-tous-formats-pour-afficher-dans-toutes-les-dimensions-desirees

broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
8 nov. 2006 à 22:09
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 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
8 nov. 2006 à 20:57
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 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
8 nov. 2006 à 20:39
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
31 oct. 2006 à 09:11
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 ;-)
Rejoignez-nous