视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php网站怎么修改图片
2020-11-27 14:18:53 责编:小采
文档

主要还是用到php中的GD库中的函数

upload_image.php,主要是一个上传控件,用来选择图片

<html>
 <head>
 <title></title>
 <style type="text/css"></style>
 </head>
 <body>
 <form action="check_image.php" method="post" enctype="multipart/form-data">
 <table>
 <tr>
 <td>Your username</td>
 <td><input type="text" name="username" /></td>
 </tr>
 <tr>
 <td>Upload image*</td>
 <td><input type="file" name="uploadfile"/></td>
 </tr>
 <tr>
 <td colspan="2">
 <small><em> * Acceptable image formats include: GIF, JPG/JPEG and PNG.</em></small>
 </td>
 </tr>
 <tr>
 <td>Image Caption</td>
 <td><input type="text" name="caption"/></td>
 </tr>
 <tr>
 <td colspan="2" style="text-align:center;">
 <input type="submit" name="submit" value="Upload" />
 </td>
 </tr>
 </table>
 </form>
 </body>
</html>

然后是上传和处理图片的逻辑check_image.php

<?php 
//修改图片效果
$db = mysql_connect('localhost','root','Ctrip07185419') or die('can not connect to database');
mysql_select_db('moviesite',$db) or die(mysql_error($db));
//上传文件的路径
$dir = 'D:\Serious\phpdev\test\images';

//upload_image.php页面传递过来的参数,如果是上传图片
if($_POST['submit'] == 'Upload')
{
 if($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK)
 {
 switch($_FILES['uploadfiel']['error'])
 {
 case UPLOAD_ERR_INI_SIZE:
 die('The uploaded file exceeds the upload_max_filesize directive');
 break;
 case UPLOAD_ERR_FORM_SIZE:
 die('The upload file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form');
 break;
 case UPLOAD_ERR_PARTIAL:
 die('The uploaded file was only partially uploaded');
 break;
 case UPLOAD_ERR_NO_FILE:
 die('No file was uploaded');
 break;
 case UPLOAD_ERR_NO_TMP_DIR:
 die('The server is missing a temporary folder');
 break; 
 case UPLOAD_ERR_CANT_WRITE:
 die('The server fail to write the uploaded file to the disk');
 break; 
 case UPLOAD_ERR_EXTENSION:
 die('The upload stopped by extension');
 break; 
 }
 }
 $image_caption = $_POST['caption'];
 $image_username = $_POST['username'];
 $image_date = date('Y-m-d');
 list($width,$height,$type,$attr) = getimagesize($_FILES['uploadfile']['tmp_name']);
 $error = 'The file you upload is not a supported filetype';
 switch($type)
 {
 case IMAGETYPE_GIF:
 $image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die($error);
 break;
 case IMAGETYPE_JPEG:
 $image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die($error);
 break;
 case IMAGETYPE_PNG:
 $image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or die($error);
 break;
 default:
 break;
 }
 $query = 'insert into images(image_caption,image_username,image_date) values("'.$image_caption.'" , "'.$image_username.'","'.$image_date.'")';
 $result = mysql_query($query,$db) or die(mysql_error($db));
 $last_id = mysql_insert_id();
 
 // $imagename = $last_id.'.jpg';
 // imagejpeg($image,$dir.'/'.$imagename);
 // imagedestroy($image);
 
 $image_id = $last_id;
 imagejpeg($image , $dir.'/'.$image_id.'.jpg');
 imagedestroy($image);
}
else //如果图片已经上传,则从数据库中取图片名字
{
 $query = 'select image_id,image_caption,image_username,image_date from images where image_id='.$_POST['id'];
 $result = mysql_query($query,$db) or die(mysql_error($db));
 extract(mysql_fetch_assoc($result));
 list($width,$height,$type,$attr) = getimagesize($dir.'/'.$image_id.'.jpg');
}

//如果是保存图片
if($_POST['submit'] == 'Save')
{
 if(isset($_POST['id']) && ctype_digit($_POST['id']) && file_exists($dir.'/'.$_POST['id'].'.jpg'))
 {
 $image = imagecreatefromjpeg($dir.'/'.$_POST['id'].'.jpg');
 }
 else
 {
 die('invalid image specified');
 }
 $effect = (isset($_POST['effect'])) ? $_POST['effect'] : -1;
 switch($effect)
 {
 case IMG_FILTER_NEGATE:
 imagefilter($image , IMG_FILTER_NEGATE); //将图像中所有颜色反转
 break;
 case IMG_FILTER_GRAYSCALE:
 imagefilter($image , IMG_FILTER_GRAYSCALE); //将图像转换为灰度的
 break;
 case IMG_FILTER_EMBOSS:
 imagefilter($image , IMG_FILTER_EMBOSS); //使图像浮雕化
 break;
 case IMG_FILTER_GAUSSIAN_BLUR:
 imagefilter($image , IMG_FILTER_GAUSSIAN_BLUR); //用高斯算法模糊图像
 break; 
 }
 imagejpeg($image , $dir.'/'.$_POST['id'].'.jpg' , 100);
 ?>
 <html>
 <head>
 <title>Here is your pic!</title>
 </head>
 <body>
 <h1>Your image has been saved!</h1>
 <img src="images/<?php echo $_POST['id'];?>.jpg" alt="" />
 </body>
 </html>
<?php 
}
else
{
?>
 <html>
 <head>
 <title>Here is your pic!</title>
 </head>
 <body>
 <h1>So how does it feel to be famous?</h1>
 <p>Here is the picture you just uploaded to your servers:</p>
 <!--<img src="images/<?php echo $imagename;?>" alt="" style="float:left;" />-->
 </body>
 </html>
 <?php
 if($_POST['submit'] == 'Upload')
 {
 $imagename = 'images/'.$image_id.'.jpg';
 }
 else
 {
 $imagename = 'image_effect.php?id='.$image_id.'&e='.$_POST['effect'];
 }
 ?>
 <img src="<?php echo $imagename;?>" style="float:left;" alt="" />
 <table>
 <tr>
 <td>Image save as:</td>
 <td><?php $image_id?></td>
 </tr>
 <tr>
 <td>Height:</td>
 <td><?php echo $height;?></td>
 </tr>
 <tr>
 <td>Widht:</td>
 <td><?php echo $width;?></td>
 </tr>
 <tr>
 <td>Upload date:</td>
 <td><?php echo $image_date;?></td>
 </tr>
 </table>
 <p>You may apply a special effect to your image from the list of option below.
 Note:saving an image with any of the filters applied <em>can be undone</em>
 </p>
 <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
 <div>
 <input type="hidden" name="id" value="<?php echo $image_id;?>"/>
 <select name="effect" id="">
 <option value="-1">None</option>
 <?php 
 echo '<option value="'.IMG_FILTER_GRAYSCALE.'" ';
 if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GRAYSCALE)
 {
 echo 'selected="selected"';
 }
 echo ' >Black and white</option>';
 
 echo '<option value="'.IMG_FILTER_GAUSSIAN_BLUR.'"';
 if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GAUSSIAN_BLUR)
 {
 echo ' selected="selected"';
 }
 echo '>Blur</option>';
 
 echo '<option value="'.IMG_FILTER_EMBOSS.'"';
 if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_EMBOSS)
 {
 echo 'selected="selected"';
 }
 echo '>Emboss</option>';
 
 echo '<option value="'.IMG_FILTER_NEGATE.'"';
 if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_NEGATE)
 {
 echo 'selected="selected"';
 }
 echo '>Negative</option>';
 ?>
 </select><br />
 <input type="submit" value="Preview" name="submit" /><br />
 <input type="submit" value="Save" name="submit" />
 
 </div>
 </form>
<?php 
}
?>

最后是一个预览效果的页面image_effect.php

<?php 
$dir = 'D:\Serious\phpdev\test\images';

if(isset($_GET['id']) && ctype_digit($_GET['id']) && file_exists($dir.'/'.$_GET['id'].'.jpg'))
{
 $image = imagecreatefromjpeg($dir.'/'.$_GET['id'].'.jpg');
}
else
{
 die('invalid image specified');
}

$effect = (isset($_GET['e'])) ? $_GET['e'] : -1;

switch($effect)
{
 case IMG_FILTER_NEGATE:
 imagefilter($image , IMG_FILTER_NEGATE);
 break;
 case IMG_FILTER_GRAYSCALE:
 imagefilter($image , IMG_FILTER_GRAYSCALE);
 break; 
 case IMG_FILTER_EMBOSS:
 imagefilter($image , IMG_FILTER_EMBOSS);
 break; 
 case IMG_FILTER_GAUSSIAN_BLUR:
 imagefilter($image , IMG_FILTER_GAUSSIAN_BLUR);
 break; 
}
header('Content-Type:image/jpeg');
imagejpeg($image , '' , 100);

?>

当使用imagefilter方法处理图片之后会把图片输出到页面,这里要注意imagejpeg方法的第二个参数是空字符串,这样它就不会写入到硬盘中了,如果第二个参数设置了会覆盖原有的图片,这样可以让用户在保存图片之前随意的预览效果,如下:

header('Content-Type:image/jpeg');
imagejpeg($image , '' , 100);

在check_image.php中有调用到类似的方法,但是这里指定了第二个参数,就是用来保存图片的:

imagejpeg($image , $dir.'/'.$_POST['id'].'.jpg' , 100);

php中处理图片的方法:

IMG_FILTER_NEGATE:将图像中所有颜色反转。

IMG_FILTER_GRAYSCALE:将图像转换为灰度的。

IMG_FILTER_BRIGHTNESS:改变图像的亮度。用 arg1 设定亮度级别。

IMG_FILTER_CONTRAST:改变图像的对比度。用 arg1 设定对比度级别。

IMG_FILTER_COLORIZE:与 IMG_FILTER_GRAYSCALE 类似,不过可以指定颜色。用 arg1,arg2 和 arg3 分别指定 red,blue 和 green。每种颜色范围是 0 到 255。

IMG_FILTER_EDGEDETECT:用边缘检测来突出图像的边缘。

IMG_FILTER_EMBOSS:使图像浮雕化。

IMG_FILTER_GAUSSIAN_BLUR:用高斯算法模糊图像。

IMG_FILTER_SELECTIVE_BLUR:模糊图像。

IMG_FILTER_MEAN_REMOVAL:用平均移除法来达到轮廓效果。

IMG_FILTER_SMOOTH:使图像更柔滑。用 arg1 设定柔滑级别。

下载本文
显示全文
专题