Bonjour,
j'ai suivi le tutoriel sur la librarie Imagine de grafikart et je les adapté pour l'utiliser sur le framework Cakephp, mais quand je fait appelle à la fonction mosaic() de ma petite classe Image. Le serveur plante et il me dit que aucune données reçus. et mon image mosaic n'apparaît pas dans mon dossier /img/imagine/.
Voici le code source de ma classe Image() :
[code]
<?php
class Image{
static function resize($image, $width, $height){
$info = pathinfo($image);
$dest = $info['dirname'] . '/' . $info['filename'] . "_$width" . "x$height" . ".jpg";
if(file_exists($dest)){
return '<img src="' . $dest . '">';
}
require_once 'imagine.phar';
$imagine = new Imagine\Gd\Imagine();
$size = new Imagine\Image\Box($width,$height);
$imagine->open($image)->thumbnail($size, 'outbound')->save($dest);
return '<img src="' . $dest . '">';
}
static function mosaic($directory, $perLine, $width, $height){
$dest = $directory . '/mosaic.jpg';
var_dump($directory);
if(file_exists($dest)){
return $dest;
}
$images = glob($directory . '/*.jpg');
require_once 'imagine.phar';
// On crée une mosaic vide
$imagine = new Imagine\Gd\Imagine();
$size = new Imagine\Image\Box($width * ceil( count($images) / $perLine), $perLine * $height);
$thumbsize = new Imagine\Image\Box($width, $height);
$mosaic = $imagine->create($size);
foreach($images as $k => $image){
if(!strpos($image, 'mosaic')){
$x = floor($k / $perLine) * $width;
$y = $k % $perLine * $height;
$point = new Imagine\Image\Point($x, $y);
$thumb = $imagine->open($image)->thumbnail($thumbsize, 'outbound');
$mosaic->paste($thumb, $point);
}
}
$aplat = $imagine->create($size, new Imagine\Image\Color('000000', 50));
$mosaic->paste($aplat, new Imagine\Image\Point(0,0));
$mosaic->save($dest);
return $dest;
}
}
[/code]
Dans mon controller quotesController (un controller que j'ai choisi au hasard)
Je fait un require de la library Imagine et ma petit library Image()
[code]function carousel(){
require APPLIBS.'Imagine'.DS.'imagine.phar';
require APPLIBS.'Imagine'.DS.'image.php';
}[/code]
sur la vue carousel.ctp je fait un style css de .item où ma mosaïque est posé apparaitre.
[code]
<style type="text/css">
.item{
background: url(<?= Image::mosaic('/img/imagine/',5 ,100, 75); ?>) left top;
}
</style>
[/code]
Merci de votre aide en avance.