Board logo

标题: [文件操作] [已解决]批处理如何实现在不破坏原图片文件的情况下改变图片的大小和哈希(hash)值? [打印本页]

作者: crownking1983    时间: 2016-5-21 18:29     标题: [已解决]批处理如何实现在不破坏原图片文件的情况下改变图片的大小和哈希(hash)值?

本帖最后由 crownking1983 于 2016-5-23 15:43 编辑

求一个可以给一堆相同图片随机不同位置批量加2像素*2像素的黑点的BAT命令。
有点抽象,详细说明一下,比如有几百张一模一样的图片(其实也就是同一张图复制了几百个),像素均是800*600.
由于特殊工作需要将这些图片的CRC哈希校验值改变,使这几百张图片的大小和哈希校验值大部分不同,最简单的方法就是在每一个图片随机位置上点上一个2像素*2像素的黑点,这样就可以实现了。
但是几百张图 一张一张用画图软件去点是很类的,问下有没有bat批处理命令可以做到,双击后,所有图片每个图都在不同的随机位置上加一个2像素*2像素的黑点。
PS  1像素*1像素也行 就是小了点  3像素*3像素也行 就是大了点

特别注意,这相同的几百个图,如果某两张黑点点的是同一个位置的话,那么这两张图的大小和哈希值就会完全相同了。
我也不强求黑点的随机位置一个不重复,只要90%不重复就可以了。特殊工作需要,由于这张图是宣传页,这样批处理的目的,是为了避免有人通过大小或者CRC校验值批量搜索导致所有的宣传页被批量搜素出来。
作者: pcl_test    时间: 2016-5-21 20:34

imagemagick,然而只是改变图片哈希值并不需要这么麻烦
作者: crownking1983    时间: 2016-5-21 21:33

回复 2# pcl_test


    呀呀呀!只要能改变文件的大小和哈希值就可以了。只改变哈希值也不行,因为如果大小全都一样的话,依然可以通过固定字节数批量搜到这些文件
作者: crownking1983    时间: 2016-5-21 21:35

回复 2# pcl_test


    另外我要说的是 我今天问的两个奇葩问题,是我整个工作中的最后俩问题了。只要解决了这最后两个问题,以后再也不会有这种奇葩问题了,感激版主多次鼎力相助
作者: WHY    时间: 2016-5-21 23:00

举例:
  1. @echo off & setlocal enabledelayedexpansion
  2. set s=00000000000
  3. for /l %%i in (1 1 10) do (
  4.     set n=!s:~%%i!
  5.     echo;!n!>~tmp.$
  6.     copy /b a.jpg + ~tmp.$ %%i.jpg
  7. )
复制代码

作者: crownking1983    时间: 2016-5-21 23:15

回复 5# WHY


    大神,这个我使用了,但是运行后黑一下就没反应了,文件夹里多了一个~tmp.$的文件,所有图片也没有任何变化
作者: WHY    时间: 2016-5-22 00:14

回复 6# crownking1983


    举例的意思是:把一个图片文件 a.jpg 与批处理放在同一目录,运行批处理后会生成10个文件(1.jpg~10.jpg),其大小与hash值均不相同
作者: crownking1983    时间: 2016-5-22 01:57

回复 7# WHY


    理解了 很好用!!谢谢
作者: ivor    时间: 2016-5-22 15:28

本帖最后由 ivor 于 2016-5-22 15:49 编辑

回复 1# crownking1983
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. REM change current directory .jpg's hash and size
  3. for /f "delims=" %%b in ('dir /s /b *.jpg') do (
  4. set data=!data!1
  5. echo !data!>>%%b
  6. )
复制代码

作者: crownking1983    时间: 2016-5-23 11:36

回复 9# ivor


    大神,你这个真是完美!!!
作者: crownking1983    时间: 2016-5-23 11:43

回复 9# ivor


    大神,您这个批处理是按依次+1字节的规律处理的。那么如果引申一步,我要实现随机批处理加 1字节-1000字节 任意一个数的话,这个批处理命令该如何修改
作者: ivor    时间: 2016-5-23 13:16

本帖最后由 ivor 于 2016-5-23 13:18 编辑

回复 11# crownking1983
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. REM change current directory .jpg's hash and size
  3. for /f "delims=" %%b in ('dir /s /b *.jpg') do (
  4. call :addbyte
  5. echo !data!>>"%%b"
  6. echo %%b  增加  !rand!  字节
  7. )
  8. pause & goto :EOF
  9. :addbyte
  10. set /a rand=!random!%%1000
  11. set data=
  12. for /l %%a in (1,1,!rand!) do (
  13. set data=!data!1
  14. )
复制代码

作者: crownking1983    时间: 2016-5-23 15:42

回复 12# ivor


    果然是高人哪!今天技术+1发完了 明天再给你+1哈 昨天还有一个帖子你也答复我了很完美,后天那个帖子再给你+1
作者: taotaotu    时间: 2019-3-14 12:29

版主,我也有这方面的需求,但是对于这个答案,还不是很明白!
作者: taotaotu    时间: 2019-3-14 12:33

版主你好,很高兴看到你帮助大家的贴子,
我对这个问题也有需求,但是还是没搞明白。希望版主有空教教我,谢谢版主大大。我一直在线等你。谢谢
作者: Batcher    时间: 2019-3-14 12:57

回复 15# taotaotu


    你用的是几楼的代码?什么地方没有明白?
作者: taotaotu    时间: 2019-3-15 21:26

回复 16# Batcher


    谢谢管理员的回复,我自己慢慢摸索,用的12楼的代码,貌似弄好了,谢谢各位大神的帮助!非常感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2