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

Signaler
Messages postés
331
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
10 février 2009
-
broumbroum
Messages postés
39
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
10 septembre 2007
-
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

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 ;-)