fix_integer_overflow(filesize($file_path)); } public function create_thumb($media) { $formats = $media->sujet->formats; $mediaPath = public_path()."/".$media->folder.$media->uid.".".$media->extension; $im = new \imagick($mediaPath); $im->setImageBackgroundColor('#ffffff'); $im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_REMOVE); $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN); $im->stripImage(); if(in_array($media->extension, array("pdf", "ai", "psd")) ){ $im->setIteratorIndex(0); } foreach ($formats as $format) { $fp = public_path()."/".$media->folder.$media->uid.'_'.$format->libelle.'.'.$format->extension; $targetWidth = $format->largeur; if($format->hauteur == 0){ $targetHeight = floor(($media->hauteur*$format->largeur)/$media->largeur); }else{ $targetHeight = $format->hauteur; } $im->setImageFormat($format->extension); if($media->largeur >= $targetWidth || $media->hauteur >= $targetHeight){ $im->thumbnailImage($targetWidth, $targetHeight , true); } $im->writeImage($fp); } $im->destroy(); } public function create_sys_thumb($media) { $mediaPath = public_path()."/".$media->folder.$media->uid.".".$media->extension; $im = new \imagick(); $im->readImage($mediaPath); if(in_array($media->extension, array("pdf", "ai", "psd")) ){ $extension = "png"; $im->setIteratorIndex(0); }else{ $extension = $media->extension; } // create preview $fp = public_path()."/".$media->folder.$media->uid.'_preview.'.$extension; if($media->extension == "gif" ){ if($media->largeur >= 1500 || $media->hauteur >= 1500 || $media->largeur == ""){ $im = $im->coalesceImages(); foreach ($im as $frame) { $frame->thumbnailImage(1500, 1500); $frame->setImagePage(1500, 1500, 0, 0); } $im = $im->deconstructImages(); } $im->writeImages($fp, true); }else{ if($media->largeur >= 1500 || $media->hauteur >= 1500 || $media->largeur == ""){ $im->thumbnailImage(1500, 1500 , true); } $im->writeImage($fp); } // create thumb $im->setImageBackgroundColor('#ffffff'); $im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_REMOVE); $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN); $im->stripImage(); $fp = public_path()."/".$media->folder.$media->uid.'_thumb.'.$extension; $im->thumbnailImage(200, 200 , true); $im->writeImage($fp); $im->destroy(); } public function get_mediaFolder() { $mediaPath = "medias/"; $directories = Storage::allDirectories($mediaPath ); $selectedFolder = ""; // on obtient le dernier dossier créé foreach ($directories as $key => $foldername) { if($selectedFolder < $foldername){ $selectedFolder = $foldername; } } // si on n'a pas de dossier, on le créé if($selectedFolder == ""){ $selectedFolder = $mediaPath.uniqid(); Storage::makeDirectory($selectedFolder); }else{ // on compte le nombre de fichier $files = Storage::allFiles($selectedFolder); // si on en a plus de 1000, on créé un nouveau dossier if(count($files)> 1000){ $selectedFolder = $mediaPath.uniqid(); Storage::makeDirectory($selectedFolder); } } return $selectedFolder; } public function fix_integer_overflow($size) { if ($size < 0) { $size += 2.0 * (PHP_INT_MAX + 1); } return $size; } public function formatBytes($octet, $precision = 2) { // Array contenant les differents unités $unite = array('octet','Ko','Mo','Go'); if ($octet < 1000) // octet { return $octet.$unite[0]; } else { if ($octet < 1000000) // ko { $ko = round($octet/1024,2); return $ko.$unite[1]; } else // Mo ou Go { if ($octet < 1000000000) // Mo { $mo = round($octet/(1024*1024),2); return $mo.$unite[2]; } else // Go { $go = round($octet/(1024*1024*1024),2); return $go.$unite[3]; } } } } // ---- Renvoi le chemin attendu d'un média selon le format demandé public function get_mediaPath($media, $format = "") { // format original if($format == ""){ return public_path()."/".$media->folder.$media->uid.'.'.$media->extension; } // format spécifique if($format->system == 0){ if(in_array($media->extension, array("gif", "jpeg", "jpg", "png", "pdf", "ai", "psd")) ){ return public_path()."/".$media->folder.$media->uid.'_'.$format->libelle.'.'.$format->extension; }else{ return public_path()."/".$media->folder.$media->uid.'.'.$media->extension; } } // format système (thumb et preview) if($format->system == 1){ if(in_array($media->extension, array("gif", "jpeg", "jpg", "png")) ){ return public_path()."/".$media->folder.$media->uid.'_'.$format->libelle.'.'.$media->extension; }elseif(in_array($media->extension, array("pdf", "ai", "psd"))){ return public_path()."/".$media->folder.$media->uid.'.png'; }else{ return public_path()."/".$media->folder.$media->uid.'.'.$media->extension; } } } }