| | |
| | | */ |
| | | public function props() |
| | | { |
| | | $rcmail = rcmail::get_instance(); |
| | | |
| | | // use GD extension |
| | | if (function_exists('getimagesize') && ($imsize = @getimagesize($this->image_file))) { |
| | | $width = $imsize[0]; |
| | | $height = $imsize[1]; |
| | |
| | | $type = image_type_to_extension($imsize['2'], false); |
| | | } |
| | | |
| | | if (!$type && ($cmd = $rcmail->config->get('im_identify_path', false))) { |
| | | $id = rcmail::exec($cmd. ' 2>/dev/null {in}', array('in' => $this->image_file)); |
| | | list(, $type, $size) = explode(' ', strtolower($id)); |
| | | if ($size) { |
| | | list($width, $height) = explode('x', $size); |
| | | } |
| | | // use ImageMagick |
| | | if (!$type && ($data = $this->identify())) { |
| | | list($type, $width, $height) = $data; |
| | | } |
| | | |
| | | if ($type) { |
| | |
| | | ); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Resize image to a given size |
| | |
| | | $result = false; |
| | | $rcmail = rcmail::get_instance(); |
| | | $convert = $rcmail->config->get('im_convert_path', false); |
| | | $identify = $rcmail->config->get('im_identify_path', false); |
| | | $props = $this->props(); |
| | | |
| | | if (!$filename) { |
| | |
| | | $p['out'] = $filename; |
| | | $p['in'] = $this->image_file; |
| | | $p['size'] = $size.'x'.$size; |
| | | $p['type'] = $type = $props['type']; |
| | | $type = $props['type']; |
| | | |
| | | if (!$type) { |
| | | list(, $p['type']) = explode(' ', strtolower(rcmail::exec($identify . ' 2>/dev/null {in}', $p))); // for things like eps |
| | | if (!$type && ($data = $this->identify())) { |
| | | $type = $data[0]; |
| | | } |
| | | |
| | | $type = strtr($type, array("jpeg" => "jpg", "tiff" => "tif", "ps" => "eps", "ept" => "eps")); |
| | |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 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)); |
| | | } |
| | | } |
| | | } |
| | | } |