Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在线涂改图片 php,php网站怎么修改图片[通俗易懂]

在线涂改图片 php,php网站怎么修改图片[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-10-04 08:46:13
发布于 2022-10-04 08:46:13
5.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

Your username

Upload image*

* Acceptable image formats include: GIF, JPG/JPEG and PNG.

Image Caption

然后是上传和处理图片的逻辑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);

?>

Here is your pic!

Your image has been saved!

}

else

{

?>

Here is your pic!

So how does it feel to be famous?

Here is the picture you just uploaded to your servers:

if($_POST[‘submit’] == ‘Upload’)

{

$imagename = ‘images/’.$image_id.’.jpg’;

}

else

{

$imagename = ‘image_effect.php?id=’.$image_id.’&e=’.$_POST[‘effect’];

}

?>

Image save as:

<?php $image_id?>

Height:

<?php echo $height;?>

Widht:

<?php echo $width;?>

Upload date:

<?php echo $image_date;?>

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 can be undone

None

echo ‘

if(isset($_POST[‘effect’]) && $_POST[‘effect’] == IMG_FILTER_GRAYSCALE)

{

echo ‘selected=”selected”‘;

}

echo ‘ >Black and white

‘;

echo ‘

if(isset($_POST[‘effect’]) && $_POST[‘effect’] == IMG_FILTER_GAUSSIAN_BLUR)

{

echo ‘ selected=”selected”‘;

}

echo ‘>Blur

‘;

echo ‘

if(isset($_POST[‘effect’]) && $_POST[‘effect’] == IMG_FILTER_EMBOSS)

{

echo ‘selected=”selected”‘;

}

echo ‘>Emboss

‘;

echo ‘

if(isset($_POST[‘effect’]) && $_POST[‘effect’] == IMG_FILTER_NEGATE)

{

echo ‘selected=”selected”‘;

}

echo ‘>Negative

‘;

?>

}

?>

最后是一个预览效果的页面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 设定柔滑级别。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/196358.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月7日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP100上的图片上传程序
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php /****************
Yiiven
2022/12/15
1.6K0
PHP 文件上传代码审计
只验证MIME类型: 代码中验证了上传的MIME类型,绕过方式使用Burp抓包,将上传的一句话小马*.php中的Content-Type:application/php,修改成Content-Type: image/png然后上传.
王 瑞
2022/12/28
1.1K0
DVWA笔记(五)----File Upload
这两天自己总结的web基础感觉还是蛮有用的,碰到正经的CTF题目虽然可能依旧磕绊,但至少知道出题人的想法了,除了脑洞题。。有些脑洞我是真的服...废话不多讲,直接上干货
用户5878089
2019/07/25
1.2K0
DVWA笔记(五)----File Upload
Upload-labs通关笔记(四)
首先在burp中不断发送上传webshell的数据包,然后不断在浏览器中访问,发现通过竞争可以访问到。
网络安全自修室
2020/07/22
8660
Upload-labs通关笔记(四)
PHP 如何阻止用户上传成人照片或者裸照
 我在phpclasses.org上面偶然发现一个很有用的,由Bakr Alsharif开发的可以帮助开发者基于皮肤像素点来检测图片裸照的类文件.
用户7657330
2020/08/14
1.3K0
PHP 图片上传与缩略图生成详解
在做网站开发的时候,我们经常会碰到让用户上传图片的需求,比如让用户上传 头像,给文章添加 封面图,或者是电商网站的 商品展示图片。这些图片不仅要存储在服务器上,还需要进行一些处理,比如 限制图片大小、检查格式,最常见的就是 生成缩略图,这样可以让网站加载更快,用户体验更好。
繁依Fanyi
2025/01/30
3950
实战 | 文件上传漏洞之最全代码检测绕过总结
文件上传漏洞是指攻击者上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。该漏洞在业务应用系统中出现概率较高,究其原因是业务场景中上传附件、头像等功能非常常见,若在系统设计中忽略了相关的安全检查,则容易导致文件上传漏洞。
HACK学习
2022/02/17
15.2K1
实战 | 文件上传漏洞之最全代码检测绕过总结
DVWA靶机之文件上传漏洞通关笔记
文件上传漏洞通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。
Power7089
2019/07/25
1.8K0
图像处理库Pillow(PIL)的使用-3(实例+详细注释+图片脚本)
Pillow 通过 ImageFilter 类来实现图像的增强效果,该类中集成了不同种类的滤波器,可以通过调用它们从而实现图像的平滑、锐化、边界增强等图像增强操作
laity
2025/02/25
4030
图像处理库Pillow(PIL)的使用-3(实例+详细注释+图片脚本)
js通过contentWindow控制iframe子页面元素点击事件,并把值传给父页面[通俗易懂]
本来需要点击一个图片后,显示一个iframe上传框.点击上传,从而操作子页面中的点击上传动作,再把值传给父页面.或控制父页面中iframe元素的显示状态.不过.通过upload()函数,可以不用显示上传框了,直接激活子页面中的上传动作.另外,onchange事件则可以自动提交上传,不必用户点击上传按钮了.三步并做一步
全栈程序员站长
2022/11/03
9K0
web安全——文件上传
文件上传本身不是漏洞,但如果文件上传功能的限制出现纰漏,允许了不合法且影响网站安全的文件的上传 可以将不合法且影响网站安全稳定性的文件等内容上传的均为“文件上传漏洞” 黑方将文件上传后可通过手段执行以及上传的脚本文件(通过获得上传的地址目录查看文件并达到目的) 一般的,以上所述的内容文件为通俗的所说的:“一句话木马”。 而文件上传功能是大多web应用均具备的功能(例如图片、附件、头像等)正常的将文件上传是合法的。 但如果通过修改文件性质,绕过web应用的限制,将恶意的脚本文件上传到服务器后台,并可以执行,意味着获得了webshell 获得webshell则意味着服务器的操作权限被拿到了下一步的攻击则是最危险的(违法) {用户=是无法直接看见后端代码的,后端代码在服务器,当用户请求服务器 (静态下,由服务器给出响应,浏览器直接渲染) (动态下,浏览器和后端的php中间件通信,由中间件对程序处理或解释,最终生成html的结果)} 流程: 成功上传——获得脚本路径——webshell 成功绕过机制将恶意脚本上传到服务器路径下后 获得脚本存放的路径 进入脚本存储路径对脚本执行(中国菜刀)
Mirror王宇阳
2020/11/13
7670
web安全——文件上传
PHP如何上传文件和下载,你学会了吗?
​ 在 B/S 程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。
叫我可儿呀
2019/12/04
1.7K0
PHP 常见漏洞代码总结
只验证MIME类型: 代码中验证了上传的MIME类型,绕过方式使用Burp抓包,将上传的一句话小马*.php中的Content-Type:application/php,修改成Content-Type: image/png然后上传.
王 瑞
2022/12/28
1.3K0
PHP全栈学习笔记32
php自定义函数之匿名函数 所谓匿名,就是没有名字。 匿名函数,也就是没有函数名的函数。
达达前端
2019/07/03
9940
PHP全栈学习笔记32
【黄啊码】如何确保php上传的图片是安全的?
使用GD(或Imagick)重新处理图像并保存处理后的图像。 所有其他人对黑客来说只是有趣的无聊。
黄啊码
2022/06/10
1.3K0
php远程上传图片资源
上传请求代码参考 <?php echo "<pre>"; print_r(json_decode(uploadFile('Filedata', $_POST), true));die; funct
友儿
2022/09/11
3.7K0
VulnHub靶场 PwnLab: init 渗透测试思路
是个白名单验证只能上传图片马,然后使用index.php的文件包含漏洞getshell,这里需要登陆才能上传文件
曈曈too
2024/08/24
1721
VulnHub靶场 PwnLab: init 渗透测试思路
upload-labs上传绕过(下)
trim函数 根据我们的测试,它是将指定的字符串移除,那么在这里我们就可以上传.pphphp即可绕过
字节脉搏实验室
2020/03/19
8970
upload-labs上传绕过(下)
用Python做图像处理[通俗易懂]
最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能。因为我是初学,对图像处理方面就不太了解了,欲要利吾事,必先利吾器,既然只是做一下实验,那用 Python 来作原型开发再好不过了。在 Python 中,比较常用的图像处理库是 PIL(Python Image Library),当前版本是 1.1.6 ,用起来非常方便。大家可以在 http://www.pythonware.com/products/pil/index.htm 下载和学习。
全栈程序员站长
2022/08/27
1.6K0
用Python做图像处理[通俗易懂]
php系列之文件上传实现
<html> <head> <meta content="text/html"charset="utf-8"></meta> </head> <body> <form method="pos
SmileNicky
2022/05/10
4490
相关推荐
PHP100上的图片上传程序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档