Ejemplo n.º 1
2
 function cdm_thumbPdf($pdf)
 {
     if (class_exists('imagick')) {
         $upload_dir = wp_upload_dir();
         $tmp_folder = $upload_dir['basedir'] . '/imageMagick_tmp/';
         if (!is_dir($tmp_folder)) {
             mkdir($tmp_folder, 0777);
         }
         $tmp = $tmp_folder;
         $format = "png";
         $source = $pdf;
         $dest = "" . $pdf . "_big.{$format}";
         $dest2 = "" . $pdf . "_small.{$format}";
         // read page 1
         $im = new imagick('' . $source . '[0]');
         // convert to jpg
         $im->setImageColorspace(255);
         $im->setImageFormat($format);
         //resize
         $im->resizeImage(650, 650, imagick::FILTER_LANCZOS, 1);
         //write image on server
         $im->writeImage($dest);
         //resize
         $im->resizeImage(250, 250, imagick::FILTER_LANCZOS, 1);
         //write image on server
         $im->writeImage($dest2);
         $im->clear();
         $im->destroy();
     } else {
         echo 'php-image-magick not installed. Please disable the pdf thumbnail options or install the php extention correctly.';
         exit;
     }
 }
 /**
  * Resize image
  *
  * @param  string   $path               image file
  * @param  int      $width              new width
  * @param  int      $height             new height
  * @param  bool	    $keepProportions    crop image
  * @param  bool	    $resizeByBiggerSide resize image based on bigger side if true
  * @param  string   $destformat         image destination format
  * @return string|false
  * @author Dmitry (dio) Levashov
  * @author Alexey Sukhotin
  **/
 protected function imgResize($path, $width, $height, $keepProportions = false, $resizeByBiggerSide = true, $destformat = null)
 {
     if (($s = @getimagesize($path)) == false) {
         return false;
     }
     $result = false;
     list($size_w, $size_h) = array($width, $height);
     if ($keepProportions == true) {
         list($orig_w, $orig_h, $new_w, $new_h) = array($s[0], $s[1], $width, $height);
         /* Calculating image scale width and height */
         $xscale = $orig_w / $new_w;
         $yscale = $orig_h / $new_h;
         /* Resizing by biggest side */
         if ($resizeByBiggerSide) {
             if ($orig_w > $orig_h) {
                 $size_h = $orig_h * $width / $orig_w;
                 $size_w = $width;
             } else {
                 $size_w = $orig_w * $height / $orig_h;
                 $size_h = $height;
             }
         } else {
             if ($orig_w > $orig_h) {
                 $size_w = $orig_w * $height / $orig_h;
                 $size_h = $height;
             } else {
                 $size_h = $orig_h * $width / $orig_w;
                 $size_w = $width;
             }
         }
     }
     switch ($this->imgLib) {
         case 'imagick':
             try {
                 $img = new imagick($path);
             } catch (Exception $e) {
                 return false;
             }
             $img->resizeImage($size_w, $size_h, Imagick::FILTER_LANCZOS, true);
             $result = $img->writeImage($path);
             return $result ? $path : false;
             break;
         case 'gd':
             if ($s['mime'] == 'image/jpeg') {
                 $img = imagecreatefromjpeg($path);
             } elseif ($s['mime'] == 'image/png') {
                 $img = imagecreatefrompng($path);
             } elseif ($s['mime'] == 'image/gif') {
                 $img = imagecreatefromgif($path);
             } elseif ($s['mime'] == 'image/xbm') {
                 $img = imagecreatefromxbm($path);
             }
             if ($img && false != ($tmp = imagecreatetruecolor($size_w, $size_h))) {
                 if (!imagecopyresampled($tmp, $img, 0, 0, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                     return false;
                 }
                 if ($destformat == 'jpg' || $destformat == null && $s['mime'] == 'image/jpeg') {
                     $result = imagejpeg($tmp, $path, 100);
                 } else {
                     if ($destformat == 'gif' || $destformat == null && $s['mime'] == 'image/gif') {
                         $result = imagegif($tmp, $path, 7);
                     } else {
                         $result = imagepng($tmp, $path, 7);
                     }
                 }
                 imagedestroy($img);
                 imagedestroy($tmp);
                 return $result ? $path : false;
             }
             break;
     }
     return false;
 }
 protected function createTmb($vd6fe1d0be6347b8ef2427fa629c04485)
 {
     $vd02a169f33469c888396a24dd9d9f1c6 = $this->mimetype($vd6fe1d0be6347b8ef2427fa629c04485);
     if (!$this->canCreateTmb($vd6fe1d0be6347b8ef2427fa629c04485, $vd02a169f33469c888396a24dd9d9f1c6)) {
         return false;
     }
     $vb068931cc450442b63f5b3d276ea4297 = $this->tmbName($vd6fe1d0be6347b8ef2427fa629c04485);
     $va8b687c2e93191d90a6d7b8982ceec4a = $this->tmbPath . DIRECTORY_SEPARATOR . $vb068931cc450442b63f5b3d276ea4297;
     if (($v25d902c24283ab8cfbac54dfa101ad31 = $this->_fopen($vd6fe1d0be6347b8ef2427fa629c04485, 'rb')) == false || ($v90710761341352a9e144d8ad4c92598b = @fopen($va8b687c2e93191d90a6d7b8982ceec4a, 'wb')) == false) {
         return false;
     }
     while (!feof($v25d902c24283ab8cfbac54dfa101ad31)) {
         fwrite($v90710761341352a9e144d8ad4c92598b, fread($v25d902c24283ab8cfbac54dfa101ad31, 8192));
     }
     $this->_fclose($v25d902c24283ab8cfbac54dfa101ad31, $vd6fe1d0be6347b8ef2427fa629c04485);
     fclose($v90710761341352a9e144d8ad4c92598b);
     if (($v03c7c0ace395d80182db07ae2c30f034 = @getimagesize($va8b687c2e93191d90a6d7b8982ceec4a)) == false) {
         return false;
     }
     $result = false;
     $v88029fd68f54ae31758f44d7b965868f = $this->tmbSize;
     list($v9dd4e461268c8034f5c8564e155c67a6, $v415290769594460e2e485922904f345d, $v84b16781293d33e80d74ef9d63280bc0, $v55fc30b57cc1b80e8f68104931fbf716) = $this->tmbEffects($v03c7c0ace395d80182db07ae2c30f034[0], $v03c7c0ace395d80182db07ae2c30f034[1], $v88029fd68f54ae31758f44d7b965868f, $this->options['tmbCrop']);
     switch ($this->imgLib) {
         case 'imagick':
             try {
                 $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = new imagick($va8b687c2e93191d90a6d7b8982ceec4a);
             } catch (Exception $ve1671797c52e15f763380b45e841ec32) {
                 return false;
             }
             $vb798abe6e1b1318ee36b0dcb3fb9e4d3->contrastImage(1);
             if ($this->options['tmbCrop'] == false) {
                 $va8a63b4d63a08aed720d0f5f249e07d9 = new Imagick();
                 $va8a63b4d63a08aed720d0f5f249e07d9->newImage($v88029fd68f54ae31758f44d7b965868f, $v88029fd68f54ae31758f44d7b965868f, new ImagickPixel($this->options['tmbBgColor']));
                 $va8a63b4d63a08aed720d0f5f249e07d9->setImageFormat('png');
                 $vb798abe6e1b1318ee36b0dcb3fb9e4d3->resizeImage($v84b16781293d33e80d74ef9d63280bc0, $v55fc30b57cc1b80e8f68104931fbf716, NULL, true);
                 $va8a63b4d63a08aed720d0f5f249e07d9->compositeImage($vb798abe6e1b1318ee36b0dcb3fb9e4d3, imagick::COMPOSITE_OVER, $v9dd4e461268c8034f5c8564e155c67a6, $v415290769594460e2e485922904f345d);
                 $result = $va8a63b4d63a08aed720d0f5f249e07d9->writeImage($va8b687c2e93191d90a6d7b8982ceec4a);
             } else {
                 $result = $vb798abe6e1b1318ee36b0dcb3fb9e4d3->cropThumbnailImage($v88029fd68f54ae31758f44d7b965868f, $v88029fd68f54ae31758f44d7b965868f) && $vb798abe6e1b1318ee36b0dcb3fb9e4d3->writeImage($va8b687c2e93191d90a6d7b8982ceec4a);
             }
             break;
         case 'gd':
             if ($v03c7c0ace395d80182db07ae2c30f034['mime'] == 'image/jpeg') {
                 $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = imagecreatefromjpeg($va8b687c2e93191d90a6d7b8982ceec4a);
             } elseif ($v03c7c0ace395d80182db07ae2c30f034['mime'] == 'image/png') {
                 $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = imagecreatefrompng($va8b687c2e93191d90a6d7b8982ceec4a);
             } elseif ($v03c7c0ace395d80182db07ae2c30f034['mime'] == 'image/gif') {
                 $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = imagecreatefromgif($va8b687c2e93191d90a6d7b8982ceec4a);
             } elseif ($v03c7c0ace395d80182db07ae2c30f034['mime'] == 'image/xbm') {
                 $vb798abe6e1b1318ee36b0dcb3fb9e4d3 = imagecreatefromxbm($va8b687c2e93191d90a6d7b8982ceec4a);
             }
             if (isset($vb798abe6e1b1318ee36b0dcb3fb9e4d3) && $vb798abe6e1b1318ee36b0dcb3fb9e4d3 && false != ($vfa816edb83e95bf0c8da580bdfd491ef = imagecreatetruecolor($v88029fd68f54ae31758f44d7b965868f, $v88029fd68f54ae31758f44d7b965868f))) {
                 if ($this->options['tmbCrop'] == false) {
                     if ($this->options['tmbBgColor'] == 'transparent') {
                         list($v4b43b0aee35624cd95b910189b3dc231, $vb2f5ff47436671b6e533d8dc3614845d, $v92eb5ffee6ae2fec3ad71c777531578f) = array(0, 0, 255);
                     } else {
                         list($v4b43b0aee35624cd95b910189b3dc231, $vb2f5ff47436671b6e533d8dc3614845d, $v92eb5ffee6ae2fec3ad71c777531578f) = sscanf($this->options['tmbBgColor'], "#%02x%02x%02x");
                     }
                     $ve12224dadfacf7a79886df59f202a403 = imagecolorallocate($vfa816edb83e95bf0c8da580bdfd491ef, $v4b43b0aee35624cd95b910189b3dc231, $vb2f5ff47436671b6e533d8dc3614845d, $v92eb5ffee6ae2fec3ad71c777531578f);
                     if ($this->options['tmbBgColor'] == 'transparent') {
                         $ve12224dadfacf7a79886df59f202a403 = imagecolortransparent($vfa816edb83e95bf0c8da580bdfd491ef, $ve12224dadfacf7a79886df59f202a403);
                     }
                     imagefill($vfa816edb83e95bf0c8da580bdfd491ef, 0, 0, $ve12224dadfacf7a79886df59f202a403);
                     if (!imagecopyresampled($vfa816edb83e95bf0c8da580bdfd491ef, $vb798abe6e1b1318ee36b0dcb3fb9e4d3, $v9dd4e461268c8034f5c8564e155c67a6, $v415290769594460e2e485922904f345d, 0, 0, $v84b16781293d33e80d74ef9d63280bc0, $v55fc30b57cc1b80e8f68104931fbf716, $v03c7c0ace395d80182db07ae2c30f034[0], $v03c7c0ace395d80182db07ae2c30f034[1])) {
                         return false;
                     }
                 } else {
                     if (!imagecopyresampled($vfa816edb83e95bf0c8da580bdfd491ef, $vb798abe6e1b1318ee36b0dcb3fb9e4d3, 0, 0, $v9dd4e461268c8034f5c8564e155c67a6, $v415290769594460e2e485922904f345d, $v88029fd68f54ae31758f44d7b965868f, $v88029fd68f54ae31758f44d7b965868f, $v84b16781293d33e80d74ef9d63280bc0, $v55fc30b57cc1b80e8f68104931fbf716)) {
                         return false;
                     }
                 }
                 $result = imagepng($vfa816edb83e95bf0c8da580bdfd491ef, $va8b687c2e93191d90a6d7b8982ceec4a, 7);
                 imagedestroy($vb798abe6e1b1318ee36b0dcb3fb9e4d3);
                 imagedestroy($vfa816edb83e95bf0c8da580bdfd491ef);
             }
             break;
     }
     return $result ? $vb068931cc450442b63f5b3d276ea4297 : false;
 }
Ejemplo n.º 4
0
 /**
  * Create image thumbnail
  *
  * @param  string  $img  image file
  * @param  string  $tmb  thumbnail name
  * @return bool
  **/
 protected function _tmb($img, $tmb)
 {
     if (false == ($s = getimagesize($img))) {
         return false;
     }
     $tmbSize = $this->_options['tmbSize'];
     if ($this->_options['tmbCrop'] == false) {
         /* Calculating image scale width and height */
         $xscale = $s[0] / $tmbSize;
         $yscale = $s[1] / $tmbSize;
         if ($yscale > $xscale) {
             $newwidth = round($s[0] * (1 / $yscale));
             $newheight = round($s[1] * (1 / $yscale));
         } else {
             $newwidth = round($s[0] * (1 / $xscale));
             $newheight = round($s[1] * (1 / $xscale));
         }
         /* Keeping original dimensions if image fitting into thumbnail without scale */
         if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
             $newwidth = $s[0];
             $newheight = $s[1];
         }
         /* Calculating coordinates for aligning thumbnail */
         $align_y = ceil(($tmbSize - $newheight) / 2);
         $align_x = ceil(($tmbSize - $newwidth) / 2);
     }
     switch ($this->_options['imgLib']) {
         case 'imagick':
             try {
                 $_img = new imagick($img);
             } catch (Exception $e) {
                 return false;
             }
             $_img->contrastImage(1);
             if ($this->_options['tmbCrop'] == false) {
                 $img1 = new Imagick();
                 $img1->newImage($tmbSize, $tmbSize, new ImagickPixel($this->_options['tmbBgColor']));
                 $img1->setImageFormat('png');
                 $_img->resizeImage($newwidth, $newheight, NULL, true);
                 $img1->compositeImage($_img, imagick::COMPOSITE_OVER, $align_x, $align_y);
                 return $img1->writeImage($tmb);
             } else {
                 return $_img->cropThumbnailImage($tmbSize, $tmbSize) && $_img->writeImage($tmb);
             }
             break;
         case 'mogrify':
             if (@copy($img, $tmb)) {
                 list($x, $y, $size) = $this->_cropPos($s[0], $s[1]);
                 // exec('mogrify -crop '.$size.'x'.$size.'+'.$x.'+'.$y.' -scale '.$tmbSize.'x'.$tmbSize.'! '.escapeshellarg($tmb), $o, $c);
                 $mogrifyArgs = 'mogrify -resize ' . $tmbSize . 'x' . $tmbSize;
                 if ($this->_options['tmbCrop'] == false) {
                     $mogrifyArgs .= ' -gravity center -background "' . $this->_options['tmbBgColor'] . '" -extent ' . $tmbSize . 'x' . $tmbSize;
                 }
                 if ($this->_options['tmbCrop'] == false) {
                     $mogrifyArgs .= ' ' . escapeshellarg($tmb);
                 }
                 exec($mogrifyArgs, $o, $c);
                 if (file_exists($tmb)) {
                     return true;
                 } elseif ($c == 0) {
                     // find tmb for psd and animated gif
                     $mime = $this->_mimetype($img);
                     if ($mime == 'image/vnd.adobe.photoshop' || ($mime = 'image/gif')) {
                         $pinfo = pathinfo($tmb);
                         $test = $pinfo['dirname'] . DIRECTORY_SEPARATOR . $pinfo['filename'] . '-0.' . $pinfo['extension'];
                         if (file_exists($test)) {
                             return rename($test, $tmb);
                         }
                     }
                 }
             }
             break;
         case 'gd':
             if ($s['mime'] == 'image/jpeg') {
                 $_img = imagecreatefromjpeg($img);
             } elseif ($s['mime'] == 'image/png') {
                 $_img = imagecreatefrompng($img);
             } elseif ($s['mime'] == 'image/gif') {
                 $_img = imagecreatefromgif($img);
             }
             if (!$_img || false == ($_tmb = imagecreatetruecolor($tmbSize, $tmbSize))) {
                 return false;
             }
             if ($this->_options['tmbCrop'] == false) {
                 list($r, $g, $b) = sscanf($this->_options['tmbBgColor'], "#%02x%02x%02x");
                 imagefill($_tmb, 0, 0, imagecolorallocate($_tmb, $r, $g, $b));
                 if (!imagecopyresampled($_tmb, $_img, $align_x, $align_y, 0, 0, $newwidth, $newheight, $s[0], $s[1])) {
                     return false;
                 }
             } else {
                 list($x, $y, $size) = $this->_cropPos($s[0], $s[1]);
                 if (!imagecopyresampled($_tmb, $_img, 0, 0, $x, $y, $tmbSize, $tmbSize, $size, $size)) {
                     return false;
                 }
             }
             $r = imagepng($_tmb, $tmb, 7);
             imagedestroy($_img);
             imagedestroy($_tmb);
             return $r;
             break;
     }
 }
 /**
  * Resize image
  *
  * @param  string   $path               image file
  * @param  int      $width              new width
  * @param  int      $height             new height
  * @param  bool	    $keepProportions    crop image
  * @param  bool	    $resizeByBiggerSide resize image based on bigger side if true
  * @param  string   $destformat         image destination format
  * @return string|false
  * @author Dmitry (dio) Levashov
  * @author Alexey Sukhotin
  **/
 protected function imgResize($path, $width, $height, $keepProportions = false, $resizeByBiggerSide = true, $destformat = null)
 {
     if (($s = @getimagesize($path)) == false) {
         return false;
     }
     $result = false;
     list($size_w, $size_h) = array($width, $height);
     if ($keepProportions == true) {
         list($orig_w, $orig_h, $new_w, $new_h) = array($s[0], $s[1], $width, $height);
         /* Calculating image scale width and height */
         $xscale = $orig_w / $new_w;
         $yscale = $orig_h / $new_h;
         /* Resizing by biggest side */
         if ($resizeByBiggerSide) {
             if ($orig_w > $orig_h) {
                 $size_h = $orig_h * $width / $orig_w;
                 $size_w = $width;
             } else {
                 $size_w = $orig_w * $height / $orig_h;
                 $size_h = $height;
             }
         } else {
             if ($orig_w > $orig_h) {
                 $size_w = $orig_w * $height / $orig_h;
                 $size_h = $height;
             } else {
                 $size_h = $orig_h * $width / $orig_w;
                 $size_w = $width;
             }
         }
     }
     switch ($this->imgLib) {
         case 'imagick':
             try {
                 $img = new imagick($path);
             } catch (Exception $e) {
                 return false;
             }
             $img->resizeImage($size_w, $size_h, Imagick::FILTER_LANCZOS, true);
             $result = $img->writeImage($path);
             return $result ? $path : false;
             break;
         case 'gd':
             $img = self::gdImageCreate($path, $s['mime']);
             if ($img && false != ($tmp = imagecreatetruecolor($size_w, $size_h))) {
                 self::gdImageBackground($tmp, $this->options['tmbBgColor']);
                 if (!imagecopyresampled($tmp, $img, 0, 0, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                     return false;
                 }
                 $result = self::gdImage($tmp, $path, $destformat, $s['mime']);
                 imagedestroy($img);
                 imagedestroy($tmp);
                 return $result ? $path : false;
             }
             break;
     }
     return false;
 }
 /**
  * Resize image
  *
  * @param  string   $path               image file
  * @param  int      $width              new width
  * @param  int      $height             new height
  * @param  bool	    $keepProportions    crop image
  * @param  bool	    $resizeByBiggerSide resize image based on bigger side if true
  * @param  string   $destformat         image destination format
  * @return string|false
  * @author Dmitry (dio) Levashov
  * @author Alexey Sukhotin
  **/
 protected function imgResize($path, $width, $height, $keepProportions = false, $resizeByBiggerSide = true, $destformat = null)
 {
     if (($s = @getimagesize($path)) == false) {
         return false;
     }
     $result = false;
     list($size_w, $size_h) = array($width, $height);
     if ($keepProportions == true) {
         list($orig_w, $orig_h, $new_w, $new_h) = array($s[0], $s[1], $width, $height);
         /* Calculating image scale width and height */
         $xscale = $orig_w / $new_w;
         $yscale = $orig_h / $new_h;
         /* Resizing by biggest side */
         if ($resizeByBiggerSide) {
             if ($orig_w > $orig_h) {
                 $size_h = $orig_h * $width / $orig_w;
                 $size_w = $width;
             } else {
                 $size_w = $orig_w * $height / $orig_h;
                 $size_h = $height;
             }
         } else {
             if ($orig_w > $orig_h) {
                 $size_w = $orig_w * $height / $orig_h;
                 $size_h = $height;
             } else {
                 $size_h = $orig_h * $width / $orig_w;
                 $size_w = $width;
             }
         }
     }
     switch ($this->imgLib) {
         case 'imagick':
             try {
                 $img = new imagick($path);
             } catch (Exception $e) {
                 return false;
             }
             // Imagick::FILTER_BOX faster than FILTER_LANCZOS so use for createTmb
             // resize bench: http://app-mgng.rhcloud.com/9
             // resize sample: http://www.dylanbeattie.net/magick/filters/result.html
             $filter = $destformat === 'png' ? Imagick::FILTER_BOX : Imagick::FILTER_LANCZOS;
             $img->resizeImage($size_w, $size_h, $filter, 1);
             $result = $img->writeImage($path);
             $img->destroy();
             return $result ? $path : false;
             break;
         case 'gd':
             $img = self::gdImageCreate($path, $s['mime']);
             if ($img && false != ($tmp = imagecreatetruecolor($size_w, $size_h))) {
                 self::gdImageBackground($tmp, $this->options['tmbBgColor']);
                 if (!imagecopyresampled($tmp, $img, 0, 0, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                     return false;
                 }
                 $result = self::gdImage($tmp, $path, $destformat, $s['mime']);
                 imagedestroy($img);
                 imagedestroy($tmp);
                 return $result ? $path : false;
             }
             break;
     }
     return false;
 }
 /**
  * Create thumnbnail and return it's URL on success
  *
  * @param  string  $path  file path
  * @param  string  $mime  file mime type
  * @return string|false
  * @author Dmitry (dio) Levashov
  **/
 protected function createTmb($path)
 {
     $mime = $this->mimetype($path);
     if (!$this->canCreateTmb($path, $mime)) {
         return false;
     }
     $name = $this->tmbName($path);
     $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;
     // copy image in tmbPath so some drivers does not store files on local fs
     if (($src = $this->_fopen($path, 'rb')) == false || ($trg = @fopen($tmb, 'wb')) == false) {
         return false;
     }
     while (!feof($src)) {
         fwrite($trg, fread($src, 8192));
     }
     $this->_fclose($src, $path);
     fclose($trg);
     if (($s = @getimagesize($tmb)) == false) {
         return false;
     }
     $result = false;
     $tmbSize = $this->tmbSize;
     list($x, $y, $size_w, $size_h) = $this->tmbEffects($s[0], $s[1], $tmbSize, $this->options['tmbCrop']);
     switch ($this->imgLib) {
         case 'imagick':
             try {
                 $img = new imagick($tmb);
             } catch (Exception $e) {
                 return false;
             }
             $img->contrastImage(1);
             if ($this->options['tmbCrop'] == false) {
                 $img1 = new Imagick();
                 $img1->newImage($tmbSize, $tmbSize, new ImagickPixel($this->options['tmbBgColor']));
                 $img1->setImageFormat('png');
                 $img->resizeImage($size_w, $size_h, NULL, true);
                 $img1->compositeImage($img, imagick::COMPOSITE_OVER, $x, $y);
                 $result = $img1->writeImage($tmb);
             } else {
                 $result = $img->cropThumbnailImage($tmbSize, $tmbSize) && $img->writeImage($tmb);
             }
             break;
         case 'gd':
             if ($s['mime'] == 'image/jpeg') {
                 $img = imagecreatefromjpeg($tmb);
             } elseif ($s['mime'] == 'image/png') {
                 $img = imagecreatefrompng($tmb);
             } elseif ($s['mime'] == 'image/gif') {
                 $img = imagecreatefromgif($tmb);
             } elseif ($s['mime'] == 'image/xbm') {
                 $img = imagecreatefromxbm($tmb);
             }
             if ($img && false != ($tmp = imagecreatetruecolor($tmbSize, $tmbSize))) {
                 if ($this->options['tmbCrop'] == false) {
                     if ($this->options['tmbBgColor'] == 'transparent') {
                         list($r, $g, $b) = array(0, 0, 255);
                     } else {
                         list($r, $g, $b) = sscanf($this->options['tmbBgColor'], "#%02x%02x%02x");
                     }
                     $bgcolor = imagecolorallocate($tmp, $r, $g, $b);
                     if ($this->options['tmbBgColor'] == 'transparent') {
                         $bgcolor = imagecolortransparent($tmp, $bgcolor);
                     }
                     imagefill($tmp, 0, 0, $bgcolor);
                     if (!imagecopyresampled($tmp, $img, $x, $y, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                         return false;
                     }
                 } else {
                     if (!imagecopyresampled($tmp, $img, 0, 0, $x, $y, $tmbSize, $tmbSize, $size_w, $size_h)) {
                         return false;
                     }
                 }
                 $result = imagepng($tmp, $tmb, 7);
                 imagedestroy($img);
                 imagedestroy($tmp);
             }
             break;
     }
     return $result ? $name : false;
 }
Ejemplo n.º 8
0
<?php

$case = "show_img";
//show_img, save_img
$cropThumbnailImage = true;
$filename = "img/" . $_GET["file"];
if (class_exists("imagick")) {
    $im = new imagick($filename);
    /* create the thumbnail */
    if ($cropThumbnailImage) {
        $im->cropThumbnailImage(80, 80);
    }
    /* Write to a file */
    if ($resizeImage) {
        $im->resizeImage(900, 80, 1, 0.5);
    }
    switch ($case) {
        case "write_img":
            $im->writeImage("img/" . $_GET["file"]);
            break;
        case "show_img":
            header("Content-Type: image/jpg");
            echo $im->getImageBlob();
            break;
    }
} else {
    cropImage_common($filename, 80, 80);
}
function cropImage_common($filename, $width, $height)
{
    // Content type
Ejemplo n.º 9
0
 private function resize_imagick($src, $width, $height, $quality, $preserveExif)
 {
     try {
         $img = new imagick($src);
         if (strtoupper($img->getImageFormat()) === 'JPEG') {
             $img->setImageCompression(imagick::COMPRESSION_JPEG);
             $img->setImageCompressionQuality($quality);
             if (!$preserveExif) {
                 try {
                     $orientation = $img->getImageOrientation();
                 } catch (ImagickException $e) {
                     $orientation = 0;
                 }
                 $img->stripImage();
                 if ($orientation) {
                     $img->setImageOrientation($orientation);
                 }
             }
         }
         $img->resizeImage($width, $height, Imagick::FILTER_LANCZOS, true);
         $result = $img->writeImage($src);
         $img->clear();
         $img->destroy();
         return $result ? true : false;
     } catch (Exception $e) {
         return false;
     }
 }
Ejemplo n.º 10
0
 /**
  * Resize image
  *
  * @param  string   $path       image file
  * @param  int      $width      new width
  * @param  int      $height     new height
  * @param  bool	    $crop       crop image
  * @param  bool	    $exactfit   fit into given dimensions exactly
  * @param  string   $imgLib     image library
  * @param  string   $bgcolor    image background color
  * @param  string   $destformat image destination format
  * @return string|false
  * @author Dmitry (dio) Levashov, Alexey Sukhotin
  **/
 protected function resizeImg($path, $width, $height, $crop = false, $exactfit = false, $imgLib = 'imagick', $bgcolor = '#0000ff', $destformat = null)
 {
     if (($s = @getimagesize($path)) == false) {
         return false;
     }
     $result = false;
     list($x, $y, $size_w, $size_h) = $this->getResizeCropDimensions($s[0], $s[1], $width, $height, $crop, $exactfit);
     switch ($imgLib) {
         case 'imagick':
             try {
                 $img = new imagick($path);
             } catch (Exception $e) {
                 return false;
             }
             $img->contrastImage(1);
             if ($crop == false) {
                 $img->resizeImage($size_w, $size_h, NULL, true);
                 if ($exactfit == true) {
                     $img1 = new Imagick();
                     $img1->newImage($width, $height, new ImagickPixel($bgcolor));
                     $img1->setImageFormat($destformat != null ? $destformat : $img->getFormat());
                     $img->resizeImage($size_w, $size_h, NULL, true);
                     $img1->compositeImage($img, imagick::COMPOSITE_OVER, $x, $y);
                     $result = $img1->writeImage($path);
                     return $result ? $path : false;
                 }
             } else {
                 $img->cropImage($width, $height, $x, $y);
             }
             $result = $img->writeImage($path);
             return $result ? $path : false;
             break;
         case 'gd':
             if ($s['mime'] == 'image/jpeg') {
                 $img = imagecreatefromjpeg($path);
             } elseif ($s['mime'] == 'image/png') {
                 $img = imagecreatefrompng($path);
             } elseif ($s['mime'] == 'image/gif') {
                 $img = imagecreatefromgif($path);
             } elseif ($s['mime'] == 'image/xbm') {
                 $img = imagecreatefromxbm($path);
             }
             $init_w = $size_w;
             $init_h = $size_h;
             if ($exactfit == true) {
                 $init_w = $width;
                 $init_h = $height;
             }
             if ($img && false != ($tmp = imagecreatetruecolor($init_w, $init_h))) {
                 if ($crop == false) {
                     if ($bgcolor == 'transparent') {
                         list($r, $g, $b) = array(0, 0, 255);
                     } else {
                         list($r, $g, $b) = sscanf($bgcolor, "#%02x%02x%02x");
                     }
                     $bgcolor1 = imagecolorallocate($tmp, $r, $g, $b);
                     if ($bgcolor == 'transparent') {
                         $bgcolor1 = imagecolortransparent($tmp, $bgcolor1);
                     }
                     imagefill($tmp, 0, 0, $bgcolor1);
                     if (!imagecopyresampled($tmp, $img, $x, $y, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                         return false;
                     }
                 } else {
                     if (!imagecopy($tmp, $img, 0, 0, $x, $y, $width, $height)) {
                         return false;
                     }
                 }
                 if ($destformat == 'jpg' || $destformat == null && $s['mime'] == 'image/jpeg') {
                     $result = imagejpeg($tmp, $path, 100);
                 } else {
                     if ($destformat == 'gif' || $destformat == null && $s['mime'] == 'image/gif') {
                         $result = imagegif($tmp, $path, 7);
                     } else {
                         $result = imagepng($tmp, $path, 7);
                     }
                 }
                 imagedestroy($img);
                 imagedestroy($tmp);
                 return $result ? $path : false;
             }
             break;
     }
     return false;
 }