简明现代魔法 -> PHP服务器脚本 -> PHP创建创建jpg格式图片

PHP创建创建jpg格式图片

2010-05-18

imagejpeg() 从 image 图像以 filename 为文件名创建一个 JPEG 图像。image 参数是 imagecreatetruecolor() 函数的返回值。

bool imagejpeg ( resource image [, string filename [, int quality]] )

filename 参数为可选,如果省略,则原始图像流将被直接输出。要省略 filename 参数而提供 quality 参数,使用空字符串('')。通过 header() 发送 Content-type: image/jpeg 可以使 PHP 脚本直接输出 JPEG 图像。JPEG 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

quality 为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。

程序示例

<? 
Header("Content-type: image/jpeg"); 
$im = imagecreatefromjpeg("./test.jpg"); 
Imagejpeg($im,'',20); 
ImageDestroy($im); 
?> 

假如有如下需求,用户上传的图片,我需要将它的图片质量降低到70%左右,可以缺省 filename 参数,然后指定原始图片与quality的值即可。当然你可以指定第二个参数作为新生成图片的文件名。

<?php
// 图片的质量参数
$quality = 70;	

if(isset($_FILES['watermarkee']) && $_FILES['watermarkee']['error']==0)\
{
	$original = $_FILES['watermarkee']['tmp_name'];
	// 创建原始图片
	$resultImage = imagecreatefromjpeg($original);

	// 定义生成的图片的名字
	$target_name = date('YmdHis').'_'.preg_replace('`[^a-z0-9-_.]`i','',$_FILES['watermarkee']['name']);
	$target = dirname(__FILE__).'/results/'.$target_name;

	// 生成新图片
	imagejpeg($resultImage, $target, $quality); 
}
?>

这里谈一下 imagecreatefromjpeg() 函数。

表单上传至服务器后,会产生$_FILES数组。如果数据有效。

$_FILES['userfile']['name']
// 客户端机器文件的原名称

$_FILES['userfile']['type']
// 文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值

$_FILES['userfile']['size']
// 已上传文件的大小,单位为字节

$_FILES['userfile']['tmp_name']
// 文件被上传后在服务端储存的临时文件名

$_FILES['userfile']['error']

$_FILES['userfile']['tmp_name']
// 临时文件已经可以作为有效的jpeg文件进行处理了。但最终通过image一系列函数处理的图像,最终的存储是要移动至目标目录的

imagecreatefromjpeg($_FILES['userfile']['tmp_name'])	// 即可生成有效的image资源

一段上传jpg图片,服务器端保存原图片和缩略图,并显示缩略图的方法。

<?php
// 保存文件缩略图
function thumbnail($filename, $newWidth, $imgName) 
{
	list ( $width, $height ) = getimagesize ( $filename );
	$newHeight = $height / ($width / $newWidth);
	$newImage = imagecreatetruecolor ( $newWidth, $newHeight );
	$oldImage = imagecreatefromjpeg ( $filename );
	imagecopyresampled ( $newImage, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height );
        
	//输出jpeg图像
	header ( 'Content-type: image/jpeg' );
	imagejpeg ( $newImage, $imgName, 99 );
	//imagedestroy ( $filename );  //若不用于显示则不用该方法。
}
    
//jpg文件上传并显示缩略图
function uploadImageFiles() 
{
	$uploaddir = getcwd () . "/uploads/";
	$uploadfile = $uploaddir . $_FILES ["upfile"] ["name"];
	//global $uploadfile;
	if ($_FILES ["upfile"] ["size"] > 5000000) 
	{
		echo "<script language='javascript'>alert('上传文件不得大于5M!');history.go(-1)</script>";
	} 
	else 
	{
		if ($_FILES ["upfile"] ["type"] != "image/gif" and $_FILES ["upfile"] ["type"] != "image/pjpeg") 
		{
			echo "<script language='javascript'>alert('上传文件类型必须是gif/jpeg/jpg格式!');history.go(-1)</script>";
		} 
		else 
		{
   			$this->thumbnail ( $_FILES["upfile"]["tmp_name"], 100, $uploaddir . "miniImg/" . $_FILES ["upfile"]["name"] );
          	if (move_uploaded_file ( $_FILES ["upfile"] ["tmp_name"], $uploadfile )) 
			{
            	echo "文件上传成功。";
            	echo "<img src=\"uploads/miniImg/" . $_FILES ["upfile"] ["name"] . "\"/>";
       		}
     	}
	}
}
?>

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们