今天在网上发现一个判断图片是否被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修改过的方法的更多相关文章

  1. JS判断上传图片格式是否正确

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. 1) 上传多张图片时 ,对 $_FILES 的处理. upload ; 2)fileinput 上传多张图片. 3) 修改,删除的时候删除原来的资源,图片 update, delete , 删除 4)生成器中两个字段上传图片的时候,要修改生成器生成的代码

    1上传多张图片, 要对 $_FILES进行 重新处理. //添加 public function addCourseAlbumAction() { $CourseAlbumModel = new Co ...

  3. PHP判断上传图片的类型

    PHP判断上传图片的类型用getimagesize来判断上传图片的类型比$_FILES函数的type更可靠 同一个文件,使用不同的浏览器php返回的type类型是不一样的,由浏览器提供type类型的话 ...

  4. (转)java判断string变量是否是数字的六种方法小结

    java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolea ...

  5. 扩展Exception,增加判断Exception是否为SQL引用约束异常方法!

    在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加.修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多 ...

  6. 【MySQL】MySQL忘记密码或修改密码的方法

    MySQL修改新密码方法 记得原密码情况下,修改新密码:登录到数据库后,输入 set password for 用户名@localhost = '新密码';  来设置新的密码,别忘记分号哦.如图所示: ...

  7. DOM修改元素的方法总结

    今天我们要谈谈DOM元素的修改(包括修改内容,属性,样式).修改内容的方法----3种:elem.innerHTML:获取或设置元素开始标签到结束标签之间的原始HTML代码片段:elem.textCo ...

  8. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  9. UWP游戏防内存修改器的方法

    最近我一直在编写适用于Windows 10商店的游戏.这款游戏比较怕玩家用修改器改金钱,因为这种修改会导致某些内购失效并且损害公平性.于是我把自己见过的三种反修改器的方法给网友们介绍一下. 首先说明一 ...

随机推荐

  1. firstElectron_web5 安装

    小娜 搜 cmd 右键 管理员运行 1.装全局 这样 不用每次都下载 因为包挺大的 还有用cnpm 要不太慢 cnpm install electron --save-dev --save-exact ...

  2. Bootstrap select(选择列表)

    当您想让用户从多个选项中进行选择,但是默认情况下只能选择一个选项,则使用选择框 1.使用<select>展示列表选项 2.使用multiple="multiple"允许 ...

  3. dedeCMS数据库字段详细介绍

    dede_addonarticle 附加文章表 aid int(11) 文章编号 typeid int(11) 分类栏目编号 body mediumtext 文章内容 dede_addonflash ...

  4. Mac 电源管理

    在安装BatteryManager后,可以删除NullPowerMananger,AppleIntelPowerMananger, AppleIntelPowerClientMananger三个kex ...

  5. MFC编辑框换行

    字符串结尾加上"\r\n": 编辑框属性设置:Auto HScroll为False,Multiline为True,Want Return为True. =============== ...

  6. back to back

    back to back 传输,以前在AMBA bus中遇到过,FIFO设计中再次遇到. 查了资料大概意思是:直接传输,不依靠中介,连续多次传输.

  7. 异步FIFO最小深度计算

    计算FIFO深度是设计FIFO中常遇到的问题.常识告诉我们,当读速率慢于写速率时,FIFO便可被用作系统中的缓冲元件或队列.因此FIFO的大小基本上暗示了所需缓存数据的容量,该容量取决于读写数据的速率 ...

  8. 王小胖之 URL编码和解码

    使用场景:程序员使用较多,主要是图个方便,实现很简单 实现功能:URL编码 和URL解码 数据实例: 输入:王小胖好啊,王小胖顶呱呱!! ~~ english 123 !@#$%^&*()_+ ...

  9. Python语言程序设计之三--列表List常见操作和错误总结

    最近在学习列表,在这里卡住了很久,主要是课后习题太多,而且难度也不小.像我看的这本<Python语言程序设计>--梁勇著,列表和多维列表两章课后习题就有93道之多.我的天!但是题目出的非常 ...

  10. ios开发中遇到的文件和字符的问题大总结

    我今天遇到的NSString问题 今天遇到一个字符串空指针问题,让我明白了许多 其实我们定义一个NSString * string,其实是定义了一个字符串指针,现在string没有指向任何地方,我们必 ...