标题: [问题求助] [已解决]PowerShell怎样把图片缩小,并复制到另外一个图片的右下角? [打印本页]
作者: czjt1234 时间: 2024-5-29 09:04 标题: [已解决]PowerShell怎样把图片缩小,并复制到另外一个图片的右下角?
本帖最后由 czjt1234 于 2024-5-30 08:14 编辑
微信收款码.jpg
支付宝收款码.jpg
桌面背景.jpg
需要在桌面背景的右下角添加微信收款码和支付宝收款码
收款码截图需要缩小为400x300像素左右
因为二维码有些变形也不要紧,所以两个收款码要调整为大小一样
把两个收款码复制到背景图片右下角并排排列
作者: Batcher 时间: 2024-5-29 09:10
参考:图片水印
https://mp.weixin.qq.com/s/mSfzh4YhBYGjiRpuOn6L7A
作者: czjt1234 时间: 2024-5-29 11:25
回复 2# Batcher
谢谢,我想学习下怎么用ps实现
作者: went 时间: 2024-5-29 17:28
test.ps1- cls
-
- #文件名
- $bg_img = '桌面背景.jpg'
- $wx_img = '微信收款码.jpg'
- $zfb_img = '支付宝收款码.jpg'
-
- #收款码尺寸
- $w = 400
- $h = 300
-
- #右,下边距和收款码间距
- $r = 10
- $b = 10
- $margin = 10
-
-
- #加载背景
- $bmp = [System.Drawing.Bitmap]::FromFile($bg_img)
- $g = [System.Drawing.Graphics]::FromImage($bmp)
-
- #绘制微信收款码
- $x = $bmp.Width - $r - $w
- $y = $bmp.Height - $b - $h
- $img = [System.Drawing.Image]::FromFile($wx_img)
- $g.DrawImage($img,$x,$y,$w,$h)
- $img.Dispose()
-
- #绘制支付宝收款码
- $x = $x - $margin - $w
- $img = [System.Drawing.Image]::FromFile($zfb_img)
- $g.DrawImage($img,$x,$y,$w,$h)
- $img.Dispose()
-
- #保存
- [void]$g.Save()
- $bmp.Save('bg_new.jpg')
- $g.Dispose()
- $bmp.Dispose()
复制代码
作者: Five66 时间: 2024-5-29 19:09
直接用400x300了
不知行否- Add-Type -AssemblyName System.Drawing
-
- $img_bg=[Drawing.Image]::FromFile('桌面背景.jpg')
- if(($img_bg.width -lt 400*2) -or ($img_bg.height -lt 300)){"do noting";cmd /c pause}
- $img_wechat=[Drawing.Image]::FromFile('微信收款码.jpg')
- $img_alipay=[Drawing.Image]::FromFile('支付宝收款码.jpg')
-
- $new_image=[drawing.bitmap]::new($img_bg.width,$img_bg.height)
- $img_canvas=[drawing.graphics]::fromimage($new_image)
- $img_canvas.InterpolationMode=[Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
- $img_canvas.drawimage($img_wechat,$new_image.width-400,$new_image.height-300,400,300,)
- $img_canvas.drawimage($img_alipay,$new_image.width-400*2,$new_image.height-300,400,300,)
- $new_image.save( 'new'+[datetime]::now.GetHashCode().tostring()+'.jpg',[Drawing.Imaging.ImageFormat]::Jpeg)
-
- $img_canvas.dispose();$new_image.dispose();
- $img_alipay.dispose();$img_wechat.dispose();$img_bg.dispose();
复制代码
作者: czjt1234 时间: 2024-5-29 21:19
本帖最后由 czjt1234 于 2024-5-30 06:27 编辑
回复 4# went
运行报错
找不到类型 [System.Drawing.Bitmap]。
所在位置 行:22 字符: 8
+ $bmp = [System.Drawing.Bitmap]::FromFile($bg_img)
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Drawing.Bitmap:TypeName) [],RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
找不到类型 [System.Drawing.Graphics]。
所在位置 行:23 字符: 6
+ $g = [System.Drawing.Graphics]::FromImage($bmp)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Drawing.Graphics:TypeName) [],RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
找不到类型 [System.Drawing.Image]。
所在位置 行:27 字符: 8
+ $img = [System.Drawing.Image]::FromFile($wx_img)
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Drawing.Image:TypeName) [],RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
系统是 win10 22H2 / win11 22H2
作者: czjt1234 时间: 2024-5-29 21:21
本帖最后由 czjt1234 于 2024-5-29 21:24 编辑
回复 5# Five66
二维码成功复制到了图片右下角,大小和位置都对
但是桌面背景图没了,变成全黑色
桌面背景.jpg是
300dpi
7087x3543
其中11行和12行报错,我把300后面的,去掉了运行成功的
作者: went 时间: 2024-5-29 22:02
回复 6# czjt1234
cls下面插入一行- [void][System.Reflection.Assembly]::LoadWithPartialName('System.Drawing')
复制代码
作者: Five66 时间: 2024-5-29 23:44
回复 7# czjt1234
额,抱歉,忘了要贴背景图了,5楼代码第10行后加上一行
$img_canvas.drawimage($img_bg,0,0,$img_bg.width,$img_bg.height)
11行和12行那确实多了个逗号,去掉
作者: czjt1234 时间: 2024-5-30 08:14
回复 8# went
回复 9# Five66
均测试成功
非常感谢
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |