| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | <?phpclass Image {	public static function toJpg($path){		$infos = pathinfo($path);		if($infos['extension']=='jpg' || $infos['extension']=='jpeg') return $path;		//Make image with white background instead of black when converting png to jpg		$input = self::resource($path);		list($width, $height) = getimagesize($path);		$output = imagecreatetruecolor($width, $height);		$white = imagecolorallocate($output,  255, 255, 255);		imagefilledrectangle($output, 0, 0, $width, $height, $white);		imagecopy($output, $input, 0, 0, 0, 0, $width, $height);		$newPath = $infos['dirname'].SLASH.$infos['filename'].'.jpg';	    // quality is a value from 0 (worst) to 100 (best)		imagejpeg($output, $newPath, 100);		unlink($path);		return $newPath;	}	public static function toPng($path){		$infos = pathinfo($path);		if($infos['extension']=='png') return;		$input = self::resource($path);		list($width, $height) = getimagesize($path);		$output = imagecreatetruecolor($width, $height);		$white = imagecolorallocate($output,  255, 255, 255);		imagefilledrectangle($output, 0, 0, $width, $height, $white);		imagecopy($output, $input, 0, 0, 0, 0, $width, $height);		$newPath = $infos['dirname'].SLASH.$infos['filename'].'.png';	    // compression is a value from 0 (no compression) to 9 (high compression)		imagepng($output, $newPath, 9);		unlink($path);		return $newPath;	}	public static function resize($path,$width,$height,$keepRatio = true,$forceResize = true){		$resource = self::resource($path);		if(!is_resource($resource)) return;		$infos = pathinfo($path);		$oldX = imageSX($resource);    	$oldY = imageSY($resource);    	// Ne pas resize une image plus petite    	if (!$forceResize && $oldX <= $width && $oldY <= $height) {    		return;    	}    	if($oldX > $oldY) {	        $thumb_w = $width;	        $thumb_h = $oldY*($height/$oldX);	    }	    if($oldX < $oldY) {	        $thumb_w = $oldX*($width/$oldY);	        $thumb_h = $height;	    }	    if($oldX == $oldY) {	        $thumb_w = $width;	        $thumb_h = $height;	    }	    if(!$keepRatio){			$thumb_w = $width;			$thumb_h = $height;	    }	    $dst_resource = ImageCreateTrueColor($thumb_w,$thumb_h);    	switch (mb_strtolower($infos['extension'])) {    	    case 'png':    	        $resource = ImageCreateFromPNG($path);    	        imagealphablending($dst_resource, false);    	        imagecopyresampled($dst_resource,$resource,0,0,0,0,$thumb_w,$thumb_h,$oldX,$oldY);    	        imagesavealpha($dst_resource, true);    	        $result = imagepng($dst_resource, $path, 4);    	    break;    	    case 'jpg':    	    case 'jpeg':    	        imagecopyresampled($dst_resource,$resource,0,0,0,0,$thumb_w,$thumb_h,$oldX,$oldY);    	        $result = imagejpeg($dst_resource,$path,80);    	    break;    	    default:	    	    //On ne peut pas resize les GIF (sans faire une usine à gaz)	    	    //On ne peut resize les BMP que depuis la v7.0 de PHP    	    break;    	}	    imagedestroy($dst_resource);    	imagedestroy($resource);	}	public static function resource($path){		$infos = pathinfo($path);		switch (mb_strtolower($infos['extension'])){			case 'jfif':			case 'jpg':			case 'jpeg':				return imagecreatefromjpeg($path);			break;			case 'png':				return imagecreatefrompng($path);			break;			case 'gif':				return imagecreatefromgif($path);			break;			// PHP 7 only			/*case 'bmp':				return imagecreatefrombmp($path);			break;*/			default:				return 0;			break;		}	}	/*	Retourne une image selon l'angle définit	Prérequis systeme :	- Installer le paquet imagemagick (apt-get install imagemagick)	nb: Si le pb "convert-im6.q16: not authorized `outfile.pdf' @ error/constitute.c/WriteImage/1037" apparait	editer /etc/ImageMagick-6/policy.xml et changer sur la ligne  PDFle droit  none à read|write .*/	public static function rotate($image,$destination,$degree){		$command = 'convert ';		$command .= ' "'.$image.'" ';		$command .= ' -rotate '.$degree.' "'.$destination.'"';		$result = shell_exec($command);		return $result;	}	/*	Concatene les images fournies en une seule	Prérequis systeme :	- Installer le paquet imagemagick (apt-get install imagemagick)	*/	public static function concatenate($images,$destinationPath){		$command = 'convert -limit width 100KP ';		foreach ($images as $image) {			$command .= ' "'.$image.'" ';		}		$command .= ' -append "'.$destinationPath.'"';		return shell_exec($command);	}	/*	Convertis le tableau de chemin d'images fournis en un PDF	Prérequis systeme :	- Installer le paquet imagemagick (apt-get install imagemagick)	nb: Si le pb "convert-im6.q16: not authorized `outfile.pdf' @ error/constitute.c/WriteImage/1037" apparait	editer /etc/ImageMagick-6/policy.xml et changer sur la ligne  PDFle droit  none à read|write .*/	public static function toPDF($images,$pdfPath){		$command = 'convert ';		foreach($images as $image)			$command .= ' "'.$image.'" ';		$command .= ' -quality 100 "'.$pdfPath.'"';		$result = shell_exec ($command);	}}
 |