주로 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_효과.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을 사용하여 각각 빨간색, 파란색 및 녹색을 지정합니다. 각 색상 범위는 0~255입니다.
IMG_FILTER_EDGEDETECT: 가장자리 감지를 사용하여 이미지 가장자리를 강조 표시합니다.
IMG_FILTER_EMBOSS: 이미지를 양각으로 만듭니다.
IMG_FILTER_GAUSSIAN_BLUR: 가우시안 알고리즘을 사용하여 이미지를 흐리게 합니다.
IMG_FILTER_SELECTIVE_BLUR: 이미지를 흐리게 합니다.
IMG_FILTER_MEAN_REMOVAL: 윤곽선 효과를 얻으려면 평균 제거 방법을 사용합니다.
IMG_FILTER_SMOOTH: 이미지를 더 부드럽게 만듭니다. 부드러움 수준을 설정하려면 arg1을 사용하세요.
위 내용은 PHP 웹사이트에서 사진을 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!