[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 跪求批量加水印的批处理程序

本帖最后由 crownking1983 于 2025-3-3 13:16 编辑

我做了一张1:1的正方形带logo水印的透明png图,命名为 水印.png 比例1:1
跪求批处理命令,将这个图添加到当前文件夹下的所有jpg png bmp格式的图片中,
水印加入方式为 正片叠底
水印透明度 X% (写到命令中 X多少我自己填)
水印添加方式 以要处理的图片的宽或高的较窄的边为参照 将1:1的水印图自动调整为该参照边长叠加进去

回复 1# crownking1983


请把以下两个文件打包压缩上传到网盘,我试试:
水印.png
其中一个jpg
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    谢谢大佬 我打包上传了

链接: https://pan.baidu.com/s/1s-kreGmDf6GrK2YAcd0nTA?pwd=1111 提取码: 1111

TOP

是这样不??
保存为ansi编码的bat
  1. @set @l_l=1;/*&echo off
  2. rem #!bin/bash # -*- coding:ASCII-8BIT -*-
  3. rem 透明度 0-1
  4. set touming=0.7
  5. rem 水印图
  6. set  shuiyin="1比1的水印.png"
  7. cmd /u /c dir /b *jpg *png *bmp| cscript //u //e:jscript //nologo "%~f0" "%shuiyin:\=\\%" "%touming%"
  8. pause&exit /b 0 */
  9. if (!WScript.Arguments.Length){WScript.Quit();}
  10. var f=[],l='';
  11. while (!WScript.StdIn.AtEndOfStream) {
  12. l=WScript.StdIn.ReadLine();
  13. f.push(l);
  14. }
  15. function Sprite(){
  16. this.bitmap=GetObject('new:WIA.ImageFile');
  17. this.shuiyin=GetObject('new:WIA.ImageFile');
  18. this.filter=GetObject('new:WIA.ImageProcess');
  19. this.filter.Filters.Add(this.filter.FilterInfos("ARGB").FilterID);
  20. this.filter.Filters.Add(this.filter.FilterInfos("Convert").FilterID);
  21. this.filter_argb=function(x){this.filter.Filters(1).Properties("ARGBData")=x;}
  22. this.filter_format=function(x){this.filter.Filters(2).Properties("FormatID").Value=x;}
  23. this.toumingdu=parseFloat(WScript.Arguments(1));
  24. this.save_to_file=function(x,y,z){
  25. if(z)this.filter_format(z);
  26. if(x){
  27. this.filter_argb(x);
  28. var new_bitmap=this.filter.Apply(this.bitmap);
  29. new_bitmap.SaveFile(y);
  30. }}
  31. }
  32. var file=GetObject("new:scripting.filesystemobject");
  33. var sprite=new Sprite();
  34. var t=sprite.toumingdu?1-sprite.toumingdu:1;
  35. sprite.filter_format("{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"); //jpeg
  36. sprite.shuiyin.LoadFile(WScript.Arguments(0));
  37. var d=sprite.shuiyin.ARGBData;
  38. for(var i=0;i<f.length;i++){
  39. if(f[i]==WScript.Arguments(0))continue;
  40. sprite.bitmap.LoadFile(f[i]);
  41. WScript.Echo("正在处理文件: "+f[i]);
  42. var d2=sprite.bitmap.ARGBData;
  43. var x=sprite.shuiyin.Width;
  44. var y=sprite.shuiyin.Height;
  45. var x2=sprite.bitmap.Width;
  46. var y2=sprite.bitmap.Height;
  47. var cx,cx2,cw,cw2,ch,ch2;
  48. if(x<x2){
  49. cx=1;cw=x;
  50. cx2=Math.floor((x2-x)/2);cw2=x2;
  51. }else{
  52. cx=Math.floor((x-x2)/2);cw=x;
  53. cx2=1;cw2=x2;
  54. }
  55. if(y<y2){
  56. cy=1;ch=y;
  57. cy2=Math.floor((y2-y)/2);ch2=y2;
  58. }else{
  59. cy=Math.floor((y-y2)/2);ch=y;
  60. cy2=1;ch2=y2;
  61. }
  62. cx=cx?cx:1;cy=cy?cy:1;
  63. cx2=cx2?cx2:1;cy2=cy2?cy2:1;
  64. WScript.Echo("w:",x,"x",y,"\ns:",x2,"x",y2);
  65. WScript.Echo("p:",cx,cy,cw,ch,"=>",cx2,cy2,cw2,ch2);
  66. for(;(cy<=ch)&&(cy2<=ch2);cy++,cy2++){
  67. var ccx=cx,ccx2=cx2;
  68. for(;(cx<=cw)&&(cx2<=cw2);cx++,cx2++){
  69. var v=d((cy-1)*cw+cx);
  70. var v2=d2((cy2-1)*cw2+cx2);
  71. var a=(v&0xff000000)>>>24;
  72. if(!a)continue;
  73. var r=(v&0x00ff0000)>>>16;
  74. var g=(v&0x0000ff00)>>>8;
  75. var b=v&0x000000ff;
  76. var b2=v2&0x000000ff;
  77. var g2=(v2&0x0000ff00)>>>8;
  78. var r2=(v2&0x00ff0000)>>>16;
  79. var a2=(v2&0xff000000)>>>24;
  80. r2=t*r+(1-t)*r2;
  81. g2=t*g+(1-t)*g2;
  82. b2=t*b+(1-t)*b2;
  83. r2=Math.floor(r2*r2/255);
  84. g2=Math.floor(g2*g2/255);
  85. b2=Math.floor(b2*b2/255);
  86. v2=(a2<<24)|(r2<<16)|(g2<<8)|b2;
  87. d2((cy2-1)*cw2+cx2)=v2;
  88. }
  89. cx=ccx;cx2=ccx2;
  90. }
  91. var nnn=0;new_filename="加了水印的_"+f[i]+".jpg";
  92. while(file.FileExists(new_filename)){
  93. nnn+=1;
  94. new_filename="加了水印的_"+f[i]+"("+nnn+")"+".jpg";
  95. }
  96. WScript.Echo("处理完成\n保存到文件: ",new_filename);
  97. sprite.save_to_file(d2,new_filename);
  98. WScript.Echo("保存完成\n");
  99. }
  100. WScript.Quit();
复制代码
1

评分人数

TOP

如果安装了imagemagick
  1. #ANSI编码&cls&powershell -Version 5.1 -NoLogo -NoProfile "gc '%~0'|out-string|iex"&pause&exit
  2. dir *.jpg, *.png -Exclude '1比1的水印.png' | %{
  3.     $m = magick identify -format "%[fx:min(w,h)]" $_.FullName
  4.     magick .\1比1的水印.png -resize "${m}x$m" -alpha set -channel A -evaluate Multiply 0.2 +channel tmp.png
  5.     magick composite -compose Multiply tmp.png $_.FullName ($_.BaseName + "水印" + $_.Extension)
  6.     rm tmp.png
  7. }
复制代码
1

评分人数

TOP

image::magick好用
[url=][/url]

TOP

返回列表