public function resize($src_file, $target_file, $width, $height, $type, $new_width, $new_height, $x = false, $y = false) { $rs = NewMagickWand(); if (MagickReadImage($rs, $src_file)) { MagickResizeImage($rs, $new_width, $new_height, MW_QuadraticFilter, 0.3); MagickSetImageFormat($rs, 'image/jpeg'); MagickWriteImage($rs, $target_file); } return true; }
protected function _save($writePath) { try { MagickSetImageColorspace($this->_resource, MW_RGBColorspace); MagickSetCompression($this->_resource, MW_JPEGCompression); MagickSetCompressionQuality($this->_resource, 85); MagickSetImageFormat($this->_resource, 'jpeg'); MagickWriteImage($this->_resource, $writePath); } catch (Exception $e) { throw new Bbx_Media_Image_Processor_Exception('Couldn\'t write image to ' . $writePath); } }
function image_resize(&$imgmdl, $src_file, $target_file, $new_width, $new_height) { if (isset($src_file) && is_file($src_file)) { list($width, $height, $type) = getimagesize($src_file); $size = self::get_image_size($new_width, $new_height, $width, $height); $new_width = $size[0]; $new_height = $size[1]; if (function_exists('magickresizeimage')) { $rs = NewMagickWand(); if (MagickReadImage($rs, $src_file)) { MagickResizeImage($rs, $new_width, $new_height, MW_QuadraticFilter, 0.3); MagickSetImageFormat($rs, 'image/jpeg'); MagickWriteImage($rs, $target_file); } return true; } elseif (function_exists('imagecopyresampled')) { $quality = 80; $image_p = imagecreatetruecolor($new_width, $new_height); imagealphablending($image_p, false); switch ($type) { case IMAGETYPE_JPEG: $image = imagecreatefromjpeg($src_file); $func = 'imagejpeg'; break; case IMAGETYPE_GIF: $image = imagecreatefromgif($src_file); $func = 'imagegif'; break; case IMAGETYPE_PNG: $image = imagecreatefrompng($src_file); imagesavealpha($image, true); $func = 'imagepng'; $quality = 8; break; } imagesavealpha($image_p, true); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); if ($func) { $func($image_p, $target_file, $quality); } imagedestroy($image_p); imagedestroy($image); } } }
/** * 转换图片格式 * @param string $format 要转换到的格式(jpg, jpeg, png等) * @return bool 成功返回true,失败返回false */ public function setImageFormat($format) { return MagickSetImageFormat(self::$resource, $format); }
/** * Write the image after being processed * * @param Asido_Image &$image * @return boolean * @access protected */ function __write(&$tmp) { $ret = false; if ($tmp->save) { // convert, then save // MagickSetImageFormat($tmp->target, $this->__mime_map[$tmp->save]); $t = $this->__tmpfile(); if (!MagickWriteImage($tmp->target, $t)) { return false; } $ret = @copy($t, $tmp->target_filename); @unlink($t); } else { // no convert, just save // $ret = MagickWriteImage($tmp->target, $tmp->target_filename); } // dispose // @$this->__destroy_source($tmp); @$this->__destroy_target($tmp); return $ret; }
function PosterizeNew() { $MagickWand = NewMagickWand(); MagickReadImage($MagickWand, "/home/alex/src/imws-server/app/www/turtlz.jpg"); #$e = MagickGetExceptionString($MagickWand); #die($e); MagickSetImageFormat($MagickWand, 'png'); MagickWriteImage($MagickWand, "/tmp/zz"); }
protected function generateMW() { if (file_exits($this->pathcache . $this->getBaseName())) { return true; } $img = NewMagickWand(); MagickReadImage($img, $this->pathname . $this->filename); $this->info = array('width' => MagickGetImageWidth($img), 'height' => MagickGetImageHeight($img), 'duration' => 0, 'mime' => $this->mime, 'size' => filesize($this->pathname . $this->filename)); MagickSetImageFormat($img, 'JPEG'); MagickWriteImage($img, $this->pathcache . $this->getBaseName()); $this->mime = 'image/jpeg'; $this->type = array('image', 'jpeg'); $this->pathname = $this->pathcache; $this->filename = $this->getBaseName(); return true; }
function createThumb($objWidth, $objHeight, $nmw = "") { $srcImage = $this->src_image_name; if (!IsMagickWand($nmw)) { $nmw = NewMagickWand(); MagickReadImage($nmw, $srcImage); } $srcImageWidth = MagickGetImageWidth($nmw); $srcImageHeight = MagickGetImageHeight($nmw); if ($objWidth == 0 || $objHeight == 0) { $objWidth = $srcImageWidth; $objHeight = $srcImageHeight; } if ($objWidth < $objHeight) { $mu = $srcImageWidth / $objWidth; $objHeight = ceil($srcImageHeight / $mu); } else { $mu = $srcImageHeight / $objHeight; $objWidth = ceil($srcImageWidth / $mu); } MagickScaleImage($nmw, $objWidth, $objHeight); $ndw = NewDrawingWand(); DrawComposite($ndw, MW_AddCompositeOp, 0, 0, $objWidth, $objHeight, $nmw); $res = NewMagickWand(); MagickNewImage($res, $objWidth, $objHeight); MagickDrawImage($res, $ndw); MagickSetImageFormat($res, MagickGetImageFormat($nmw)); return $res; }
/** * 生成指定宽度和高度的图片 * @param object image model object * @param string source file directory * @param mixed 临时数据源 * @param string 宽度 * @param string 高度 * @return null */ function image_resize(&$imgmdl, $src_file, $target_file, $new_width, $new_height) { if (isset($src_file) && is_file($src_file)) { list($width, $height, $type) = getimagesize($src_file); $size = self::get_image_size($new_width, $new_height, $width, $height); $new_width = $size[0]; $new_height = $size[1]; if (ECAE_MODE) { include_lib('image.php'); $obj = new ecae_image(); $obj->set_file($src_file); $obj->resize($new_width, $new_height); $obj->strip(); $content = $obj->exec(); if ($content) { file_put_contents($target_file, $content); return true; } else { return false; } } elseif (function_exists('magickresizeimage')) { $rs = NewMagickWand(); if (MagickReadImage($rs, $src_file)) { MagickResizeImage($rs, $new_width, $new_height, MW_QuadraticFilter, 0.3); MagickSetImageFormat($rs, 'image/jpeg'); MagickWriteImage($rs, $target_file); } return true; } elseif (function_exists('imagecopyresampled')) { $quality = 80; $image_p = imagecreatetruecolor($new_width, $new_height); if ($new_width > $width && $new_height > $height) { $background_color = imagecolorallocate($image_p, 255, 255, 255); imagefilledrectangle($image_p, 0, 0, $new_width, $new_height, $background_color); } imagealphablending($image_p, false); switch ($type) { case IMAGETYPE_JPEG: $image = imagecreatefromjpeg($src_file); $func = 'imagejpeg'; break; case IMAGETYPE_GIF: $image = imagecreatefromgif($src_file); $func = 'imagegif'; break; case IMAGETYPE_PNG: $image = imagecreatefrompng($src_file); imagesavealpha($image, true); $func = 'imagepng'; $quality = 8; break; } imagesavealpha($image_p, true); if ($new_width > $width && $new_height > $height) { imagecopyresampled($image_p, $image, ($new_width - $width) / 2, ($new_height - $height) / 2, 0, 0, $width, $height, $width, $height); } else { imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); } if ($func) { $func($image_p, $target_file, $quality); } imagedestroy($image_p); imagedestroy($image); } } }
/** * @return Imagens * @param string $digital * @param string $md5 * @param boolean $high * @param int $active * @param int $total */ public function createCacheJpegView($digital, $md5, $high = false) { $iImageHeightPixel = $high === false ? 960 : 2480; $iImageWidthPixel = $high === false ? 1280 : 3508; $lote = $this->generateLote($digital); $dirCache = sprintf('%s/cache/%s', __CAM_UPLOAD__, $lote); $tiff = sprintf('%s/%s/%s/%s.tif', __CAM_UPLOAD__, $lote, $digital, $md5); $view = sprintf('%s/%s/%s_view_%d.jpg', $dirCache, $digital, $md5, $high === false ? self::Q_LOW : self::Q_HIGH); $thumbs = sprintf('%s/%s/%s_thumb.jpg', $dirCache, $digital, $md5); if (!is_file($tiff)) { throw new Exception('Arquivo TIFF original não encontrado!'); } if (is_file($view)) { return $this; } // thumbs if (!is_file($thumbs)) { MagickReadImage($magickThumbs = NewMagickWand(), $tiff); if (MagickGetImageWidth($magickThumbs) < MagickGetImageHeight($magickThumbs)) { MagickResizeImage($magickThumbs, 150, 200, MW_QuadraticFilter, 1.0); } else { MagickResizeImage($magickThumbs, 200, 150, MW_QuadraticFilter, 1.0); } MagickSetImageFormat($magickThumbs, 'JPG'); MagickSetImageResolution($magickThumbs, 200, 200); MagickSetImageUnits($magickThumbs, MW_PixelsPerInchResolution); MagickSetImageCompression($magickThumbs, MW_JPEGCompression); MagickSetImageCompressionQuality($magickThumbs, 0.0); MagickWriteImage($magickThumbs, $thumbs); } // views MagickReadImage($magickView = NewMagickWand(), $tiff); if (MagickGetImageWidth($magickView) > MagickGetImageHeight($magickView)) { MagickResizeImage($magickView, $iImageWidthPixel, $iImageHeightPixel, MW_QuadraticFilter, 1.0); } else { MagickResizeImage($magickView, $iImageHeightPixel, $iImageWidthPixel, MW_QuadraticFilter, 1.0); } MagickSetImageFormat($magickView, 'JPG'); MagickSetImageResolution($magickView, 200, 200); MagickSetImageUnits($magickView, MW_PixelsPerInchResolution); MagickSetImageCompression($magickView, MW_JPEGCompression); MagickSetImageCompressionQuality($magickView, 0.0); MagickWriteImage($magickView, $view); $errorMagick = MagickGetExceptionString($magickView); if ($errorMagick) { throw new Exception($errorMagick); } return $this; }