示例#1
0
 /**
  * Convert an image to a given size and type using imagemagick (ensures input is an image)
  *
  * @param $p['in']  Input filename (mandatory)
  * @param $p['out'] Output filename (mandatory)
  * @param $p['size']  Width x height of resulting image, e.g. "160x60"
  * @param $p['type']  Output file type, e.g. "jpg"
  * @param $p['-opts'] Custom command line options to ImageMagick convert
  * @return Success of convert as true/false
  */
 public static function imageconvert($p)
 {
     $result = false;
     $rcmail = rcmail::get_instance();
     $convert = $rcmail->config->get('im_convert_path', false);
     $identify = $rcmail->config->get('im_identify_path', false);
     // imagemagick is required for this
     if (!$convert) {
         return false;
     }
     if (!(($imagetype = @exif_imagetype($p['in'])) && ($type = image_type_to_extension($imagetype, false)))) {
         list(, $type) = explode(' ', strtolower(rcmail::exec($identify . ' 2>/dev/null {in}', $p)));
     }
     # for things like eps
     $type = strtr($type, array("jpeg" => "jpg", "tiff" => "tif", "ps" => "eps", "ept" => "eps"));
     $p += array('type' => $type, 'types' => "bmp,eps,gif,jp2,jpg,png,svg,tif", 'quality' => 75);
     $p['-opts'] = array('-resize' => $p['size'] . '>') + (array) $p['-opts'];
     if (in_array($type, explode(',', $p['types']))) {
         # Valid type?
         $result = rcmail::exec($convert . ' 2>&1 -flatten -auto-orient -colorspace RGB -quality {quality} {-opts} {in} {type}:{out}', $p) === "";
     }
     return $result;
 }
示例#2
0
 /**
  * Identify command handler.
  */
 private function identify()
 {
     $rcmail = rcmail::get_instance();
     if ($cmd = $rcmail->config->get('im_identify_path')) {
         $args = array('in' => $this->image_file, 'format' => "%m %[fx:w] %[fx:h]");
         $id = rcmail::exec($cmd . ' 2>/dev/null -format {format} {in}', $args);
         if ($id) {
             return explode(' ', strtolower($id));
         }
     }
 }