C# 判断上传图片是否被PS修改过的方法
今天在网上发现一个判断图片是否被Photoshop修改过的方法。发现还不错,呵呵。摘录下来。
讲下基本的原理:其实每张被photoshop修改过的图片都会有Adobe Photoshop这样的字样在图片的字节流里。用最简单的方法,你可以直接把一张图片拖到txt文档中打开,你会发现是乱码,但不要紧,你仔细搜索,肯定有Adobe Photoshop这几个字样,这就说明是被ps修改过的。呵呵。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class PsCheck : Form
{
public PsCheck()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Byte[] buffer = new Byte[5120];
using (FileStream fs = new FileStream("E:\\photo.jpg", FileMode.Open))
{
fs.Read(buffer, 0, buffer.Length);
}
string str = buffer[4869].ToString(); //A 65
str += buffer[4870].ToString();//d 100
str += buffer[4871].ToString();//o 111
str += buffer[4872].ToString();//b 98
str += buffer[4873].ToString();//e 101
str += buffer[4874].ToString();// 32
str += buffer[4875].ToString();//P 80
str += buffer[4876].ToString();//h 104
str += buffer[4877].ToString();//o 111
str += buffer[4878].ToString();//t 116
str += buffer[4879].ToString();//o 111
str += buffer[4880].ToString();//s 115
str += buffer[4881].ToString();//h 104
str += buffer[4882].ToString();//o 111
str += buffer[4883].ToString();//p 112
if (str == "65100111981013280104111116111115104111112")
{
MessageBox.Show("图片被PS修改过"); // PS处理过
}
else
{
MessageBox.Show("没被PS修改");
}
}
}
}
C# 判断上传图片是否被PS修改过的方法的更多相关文章
- JS判断上传图片格式是否正确
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 1) 上传多张图片时 ,对 $_FILES 的处理. upload ; 2)fileinput 上传多张图片. 3) 修改,删除的时候删除原来的资源,图片 update, delete , 删除 4)生成器中两个字段上传图片的时候,要修改生成器生成的代码
1上传多张图片, 要对 $_FILES进行 重新处理. //添加 public function addCourseAlbumAction() { $CourseAlbumModel = new Co ...
- PHP判断上传图片的类型
PHP判断上传图片的类型用getimagesize来判断上传图片的类型比$_FILES函数的type更可靠 同一个文件,使用不同的浏览器php返回的type类型是不一样的,由浏览器提供type类型的话 ...
- (转)java判断string变量是否是数字的六种方法小结
java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolea ...
- 扩展Exception,增加判断Exception是否为SQL引用约束异常方法!
在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加.修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多 ...
- 【MySQL】MySQL忘记密码或修改密码的方法
MySQL修改新密码方法 记得原密码情况下,修改新密码:登录到数据库后,输入 set password for 用户名@localhost = '新密码'; 来设置新的密码,别忘记分号哦.如图所示: ...
- DOM修改元素的方法总结
今天我们要谈谈DOM元素的修改(包括修改内容,属性,样式).修改内容的方法----3种:elem.innerHTML:获取或设置元素开始标签到结束标签之间的原始HTML代码片段:elem.textCo ...
- Magento后台手动修改订单状态方法及手动修改方法php
订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...
- UWP游戏防内存修改器的方法
最近我一直在编写适用于Windows 10商店的游戏.这款游戏比较怕玩家用修改器改金钱,因为这种修改会导致某些内购失效并且损害公平性.于是我把自己见过的三种反修改器的方法给网友们介绍一下. 首先说明一 ...
随机推荐
- JSON数组不用字符串转换的写法
var organization = []; //机构组织 //初始化用户数据列表中用户机构列的数据源 admin.ajax("GetOrganizationInfo", null ...
- leetcode_1033. Moving Stones Until Consecutive
https://leetcode.com/problems/moving-stones-until-consecutive/ 题意:给定3个点,每次从两个端点(位置最小或位置最大)中挑选一个点进行移动 ...
- 与调试器共舞 - LLDB 的华尔兹
你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值? 1 NSLog(@"%@", whatIsInsideThisThing); 或者跳过一个函数调用来简化程序的行为? 1 ...
- Open Cascade:拓扑类型(Topo_DS)之间类型转换
TopoDS_Edge aEdge = TopoDS::Edge(myAISShape->Shape()); TopoDS_Wire S1_wire = static_cast(S1); // ...
- CPP-基础:字节对齐
一. 什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的 ...
- nyoj-915—— +-字符串
http://acm.nyist.net/JudgeOnline/problem.php?pid=915 +-字符串 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 Sh ...
- kubernetes添加不了google apt-key
转自icepoint的博客 key来源 我的百度云盘 密码:v3wo 下载kube_apt_key.gpg到本地,上传到服务器后执行下面的命令 apt-get update && ap ...
- js截屏
<html><head> <meta name="layout" content="main"> <meta http ...
- javascript(九)事件冒泡 onmouseenter onmouseenter 默认事件 和 键盘事件
1 事件冒泡 子元素触发的事件,会往上(父元素)传递: 例子: <div id="box"> <p></p> </div> < ...
- MySQL开启日志跟踪
在开发过程中有时候会遇到sql相关的问题,但是有时候代码中不会直接看到真实的sql,想要看到mysql中实际执行的是什么sql,可以通过开启日志跟踪方式查看. 1 开启日志跟踪 SET GLOBAL ...