返回列表 发帖
回复 30# 77七

magick没找到下载地方

TOP

回复 30# 77七

https://imagemagick.org/archive/ ... portable-Q8-x64.zip这个程序太大 不方便使用,能不能用bat直接调用系统自带的画图工具进行处理

TOP

回复 25# wh123wh123


方法1、抛弃Win7改用Win10或Win11
方法2、使用BAT调用第三方命令行工具(例如ImageMagick)
单纯依靠BAT本身是不行的,不必浪费这个时间。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 30# 77七

感谢老师,成功能处理。是不是只安全处理 本bat文件与需要处理的图片在同一个目录下的所有图片,不得对其他路径的文件进行错误修改吧?

TOP

回复 30# 77七


    中间的那一行大红色字体能不能去除掉?

TOP

回复 35# wh123wh123

removeRedWatermark.ps1
Add-Type -AssemblyName System.Drawing
function removeRedWatermark-Image {
    param([string]$imagePath)
    $image = [System.Drawing.Bitmap]::FromFile($imagePath)
    $rect = New-Object System.Drawing.Rectangle(0, 0, $image.Width, $image.Height)
    $bitmapData = $image.LockBits($rect, [System.Drawing.Imaging.ImageLockMode]::ReadWrite, $image.PixelFormat)
    $ptr = $bitmapData.Scan0
    $bytes = $bitmapData.Stride * $image.Height
    $rgbValues = New-Object byte[] $bytes
    [System.Runtime.InteropServices.Marshal]::Copy($ptr, $rgbValues, 0, $bytes)
    for ($i = 0; $i -lt $rgbValues.Length; $i += 3) {
        $b = $rgbValues[$i]
        $g = $rgbValues[$i + 1]
        $r = $rgbValues[$i + 2]
        if ($r -gt $g -and $r -gt $b) {
            $total = $r + $g + $b
            if ($total -gt 400) {
                $rgbValues[$i] = 255
                $rgbValues[$i + 1] = 255
                $rgbValues[$i + 2] = 255
            } else {
                $rgbValues[$i] = 0
                $rgbValues[$i + 1] = 0
                $rgbValues[$i + 2] = 0
            }
        }
    }
    [System.Runtime.InteropServices.Marshal]::Copy($rgbValues, 0, $ptr, $bytes)
    $image.UnlockBits($bitmapData)
    $newPath = [System.IO.Path]::GetDirectoryName($imagePath) + "\processed_" + [System.IO.Path]::GetFileName($imagePath)
    $image.Save($newPath)
    $image.Dispose()
}
$(dir *.jpg).foreach{
    Write-Host "processing: $($_.Name)"
    removeRedWatermark-Image $_.FullName
}COPY

TOP

回复 36# buyiyang

您用BAT行不行?我不会用这个代码

TOP

回复 34# wh123wh123


   支持子目录
@echo off
rem 下载 "https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-31-portable-Q8-x64.zip"
cd /d "%~dp0"
set "_exiftool=D:\exiftool-12.83\exiftool(-k).exe"
set "_magick=D:\magick.exe"
"%_exiftool%" -q -overwrite_original -icc_profile= -r . *.jpg
rem 0,0,1200,100 xyxy 左上角及右下角坐标
for /r %%a in (*.jpg) do (
"%_magick%" "%%a" -fill white -draw "rectangle 0,0,1200,100 rectangle 0,1660,1280,1800" "copy_%%~nxa"
move "copy_%%~nxa" "%%a"
)
pauseCOPY
bat小白,请多指教!谢谢!

TOP

回复 37# wh123wh123
win7不是带有powershell的吗

TOP

回复 35# wh123wh123


  
@echo off
cd /d "%~dp0"
set "_magick=D:\magick.exe"
for /r %%a in (*.jpg) do (
"%_magick%" "%%a" -fuzz 50% -fill white -opaque "#f4908d" "copy_%%~nxa"
move "copy_%%~nxa" "%%a"
)
pauseCOPY
由于今天免费ai限额了...只能写到这样...
bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2024-4-22 22:50 编辑


根据老帖的vbs代码改写一个bat+jscript版本,存为test.bat运行,100%取用系统内置资源,楼主试试吧...
运行结果是将当前目录及其子目录中的*.jpg裁剪(顶裁100,底裁150)完毕,对应的新文件名为*.new.jpg
代码17-18行对应的顶部/底部裁剪量可被修改


@set @v=1 //&(dir /b/s/a-d *.jpg|cscript /e:jscript "%~f0") &exit/b
////
files=WSH.stdin.readall().split('\r\n');
for (; files.slice(-1)==''; files.pop());
img=WSH.CreateObject('WIA.ImageFile');
ip=WSH.CreateObject('WIA.ImageProcess');
for (var n=0,l=files.length; n<l; ++n) {
var np=files[n].lastIndexOf('.');
var outF=files[n].slice(0,np)+'.new'+files[n].slice(np);
cutImage(files[n], outF);
}
WSH.quit();
//
function cutImage (inF, outF) {
img.loadfile(inF);
ip.filters.add(ip.filterinfos('Crop').filterid);
ip.filters(1).properties('Top')=100;
ip.filters(1).properties('Bottom')=150;
img=ip.apply(img); img.savefile(outF);
}COPY

TOP

回复 40# 77七


    没反应和没效果,没有DOS窗口

TOP

回复 38# 77七


    中间的那一行大红色字体能不能去除掉?

TOP

回复 41# aloha20200628

代码为什么复制代码粘贴到记事本里变成一行了?如何让按原格式到记事本里?

TOP

回复 41# aloha20200628


    不行,没效果

TOP

返回列表