开发者社区> 问答> 正文

使用 php 优化图片质量和大小,但是imagick扩展(类似GD库)使用不了 ,报错?

function imagick($source_img,$target_img,$with,$height){ 
	if(is_file($source_img)){ //判断源图片是否存在 
		$im = new Imagick(); 
	}else{ 
		exit; 
	} 
	$result = $im->readImage($source_img);  
	$srcWH = $im->getImageGeometry(); //获取源图片宽和高 
	
	//图片等比例缩放宽和高设置 ,根据宽度设置等比缩放 
	if($srcWH['width']>$with){ 
		$srcW['width'] = $with; 
		$srcH['height'] = $srcW['width']/$srcWH['width']*$srcWH['height']; 
	}else{ 
		$srcW['width'] = $srcWH['width']; 
		$srcH['height'] = $srcWH['height']; 
	} 
	 
	//按照比例进行缩放 
	$im->thumbnailImage( $srcW['width'], $srcH['height'], true );  
	 
	// 按照缩略图大小创建一个有颜色的图片 
	$new_img= new Imagick(); 
	$new_img->newImage( $srcW['width'], $srcH['height'], 'white', 'jpg' ); //pink,black 
	 
	//合并图片 
	$new_img->compositeImage( $im, imagick::COMPOSITE_OVER, 0, 0);  
	//生成图片 
	$new_img->setImageFileName($target_img); 
	$new_img->writeImage(); 
	//输出图片 
	header( "Content-Type: image/jpg" ); 
	echo $new_img; 
} 

imagick('logo.png','111111logo.png',100,100);



环境 windows 7 + php5.3.2

查看phpinfo imagick扩展正常

但是当程序运行到 $result = $im->readImage($source_img); 时,网页就不能访问了。

有人遇到过此类问题么,该怎么解决??


展开
收起
一枚小鲜肉帅哥 2020-06-16 22:48:01 1398 0
1 条回答
写回答
取消 提交回答
  • 菜不可及的程序猿

    方案: nginx利用image_filter动态生成缩略图

    官方参考文档:http://wiki.nginx.org/NginxHttpImageFilterModule

    可以参考

    PHP等比例缩放图片大小压缩图片空间

    2020-06-16 22:49:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载