Eléphanteau du PHP |
45 Messages
13 nov. 2009, 17:24
Non j'utilise bien ImageCreateTrueColor(),
Voilà c'est dans une class,
/**
* Redimensionne une image $pictures, avec proportionalité sur la hauteur $new_width, largeur $new_height
* ou selon une taille prédéfinie ($new_width, $new_height)
*
* @arguments STRING $pictures chemin d'accès à une image
* INT $new_width taille en pixel de la largeur voulue
* INT $new_height taille en pixel de la hauteur voulue
*
* @return BOOL 0 si une erreur est survenue
* RESOURCE images
*/
public function set_resize_pics( $pictures, $new_width = NULL, $new_height = NULL) {
// Image properties
if( !getimagesize( $pictures ) ) {
return FALSE;
}
else {
$pics_param = getimagesize( $pictures );
}
// Resize fixed width and height
if( isset( $new_width ) && isset( $new_height ) ) {
$width = $new_width;
$height = $new_height;
}
// Resize by new width
elseif( isset( $new_width ) && is_null( $new_height ) ) {
// Ratio by width
if( $new_width > $pics_param[0] ) {
$ratio = $new_width / $pics_param[0] ;
$width = $new_width ;
$height = round( $pics_param[1] * $ratio ) ;
}
else {
$ratio = $pics_param[0] / $new_width ;
$width = $new_width ;
$height = round( $pics_param[1] / $ratio ) ;
}
}
// Resize by new height
elseif( isset( $new_height ) && is_null( $new_width ) ) {
// Ratio by height
if( $new_height > $pics_param[1] ) {
$ratio = $new_height / $pics_param[1] ;
$width = round( $pics_param[0] * $ratio ) ;
$height = $new_height ;
}
else {
$ratio = $pics_param[1] / $new_height ;
$width = round( $pics_param[0] / $ratio ) ;
$height = $new_height ;
}
}
$image_mini = imagecreatetruecolor( $width, $height ) ;
ImageAlphaBlending($image_mini, false);
ImageSaveAlpha($image_mini, true);
$pictures_origin = self::get_open_pics( $pictures ) ;
imagecopyresampled( $image_mini, $pictures_origin, 0, 0, 0, 0, $width, $height, $pics_param[0], $pics_param[1]) ;
return $image_mini;
}
Et get_open_pics
/**
* Ouvre une image $pictures
*
* @arguments STRING $pictures chemin d'accès à une image
* @return BOOL 0 si une erreur est survenuee
* RESOURCE images
*/
public function get_open_pics( $pictures ) {
if( !is_file($pictures) ) {
return FALSE;
}
$pictures_param = self::get_properties_pics( $pictures );
switch( $pictures_param['mime'] ) {
case 'image/png':
// Conserve l'alpha blending !
$size = getimagesize( $pictures ) ;
$img_src_resource = imagecreatetruecolor($size[0], $size[1]);
ImageAlphaBlending($img_src_resource, false);
ImageSaveAlpha($img_src_resource, true);
$im = imagecreatefrompng($pictures);
imagecopyresampled($img_src_resource, $im, 0,0,0,0, $size[0], $size[1], $size[0], $size[1]);
//
return $img_src_resource;
break;
case 'image/jpeg':
$img_src_resource = imagecreatefromjpeg($pictures);
return $img_src_resource;
break;
case 'image/gif':
$img_src_resource = imagecreatefromgif($pictures);
return $img_src_resource;
break;
default :
return FALSE;
break;
}
}
Vlà, thx