Пример #1
0
 public static function make($file, $hash, $parameters)
 {
     $PHPicture = PHPicture::getInstance();
     self::$file = pathinfo($PHPicture->imagesPath() . '/' . $file);
     self::$file_absolute_path = $PHPicture->imagesPath() . '/' . self::$file['basename'];
     $source = self::makeSource();
     $sizes = getimagesize(self::$file_absolute_path);
     $newImage['width'] = array_key_exists('w', $parameters) ? $parameters['w'] : $sizes[0];
     $newImage['height'] = array_key_exists('h', $parameters) ? $parameters['h'] : $sizes[1];
     $extension = array_key_exists('f', $parameters) ? $parameters['f'] : self::$file['extension'];
     $hash = $hash . '.' . $extension;
     $quality = array_key_exists('q', $parameters) ? $parameters['q'] : 0;
     $aspectRatio['thumb'] = $newImage['width'] / $newImage['height'];
     $aspectRatio['original'] = $sizes[0] / $sizes[1];
     $newImageThumb = self::aspectRatio($aspectRatio, $newImage, $sizes);
     $new_image_temp = imagecreatetruecolor($newImageThumb['width'], $newImageThumb['height']);
     imagecopyresampled($new_image_temp, $source, 0, 0, 0, 0, $newImageThumb['width'], $newImageThumb['height'], $sizes[0], $sizes[1]);
     $new_image = imagecreatetruecolor($newImage['width'], $newImage['height']);
     $backcolor = array_key_exists('b', $parameters) ? PHPTools::hexToRGB($parameters['b']) : PHPTools::color_black;
     $backcolor = imagecolorallocate($new_image, $backcolor[0], $backcolor[1], $backcolor[2]);
     imagefill($new_image, 0, 0, $backcolor);
     imagecopy($new_image, $new_image_temp, imagesx($new_image) / 2 - imagesx($new_image_temp) / 2, imagesy($new_image) / 2 - imagesy($new_image_temp) / 2, 0, 0, imagesx($new_image_temp), imagesy($new_image_temp));
     // echo 'arquivo:'.$PHPicture->cachePath().'/'.$hash;
     // die;
     switch ($extension) {
         case 'png':
             imagepng($new_image, $PHPicture->cachePath() . '/' . $hash, $quality);
             break;
         case 'jpg':
             imagejpeg($new_image, $PHPicture->cachePath() . '/' . $hash, $quality);
             break;
         case 'jpeg':
             imagejpeg($new_image, $PHPicture->cachePath() . '/' . $hash, $quality);
             break;
         case 'gif':
             imagegif($new_image, $PHPicture->cachePath() . '/' . $hash, $quality);
             break;
     }
     $PHPicture->load($hash);
 }