Board logo

标题: [问题求助] [已解决]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
  1. cls
  2. #文件名
  3. $bg_img = '桌面背景.jpg'
  4. $wx_img = '微信收款码.jpg'
  5. $zfb_img = '支付宝收款码.jpg'
  6. #收款码尺寸
  7. $w = 400
  8. $h = 300
  9. #右,下边距和收款码间距
  10. $r = 10
  11. $b = 10
  12. $margin = 10
  13. #加载背景
  14. $bmp = [System.Drawing.Bitmap]::FromFile($bg_img)
  15. $g = [System.Drawing.Graphics]::FromImage($bmp)
  16. #绘制微信收款码
  17. $x = $bmp.Width - $r - $w
  18. $y = $bmp.Height - $b - $h
  19. $img = [System.Drawing.Image]::FromFile($wx_img)
  20. $g.DrawImage($img,$x,$y,$w,$h)
  21. $img.Dispose()
  22. #绘制支付宝收款码
  23. $x = $x - $margin - $w
  24. $img = [System.Drawing.Image]::FromFile($zfb_img)
  25. $g.DrawImage($img,$x,$y,$w,$h)
  26. $img.Dispose()
  27. #保存
  28. [void]$g.Save()
  29. $bmp.Save('bg_new.jpg')
  30. $g.Dispose()
  31. $bmp.Dispose()
复制代码

作者: Five66    时间: 2024-5-29 19:09

直接用400x300了
不知行否
  1. Add-Type -AssemblyName System.Drawing
  2. $img_bg=[Drawing.Image]::FromFile('桌面背景.jpg')
  3. if(($img_bg.width -lt 400*2) -or ($img_bg.height -lt 300)){"do noting";cmd /c pause}
  4. $img_wechat=[Drawing.Image]::FromFile('微信收款码.jpg')
  5. $img_alipay=[Drawing.Image]::FromFile('支付宝收款码.jpg')
  6. $new_image=[drawing.bitmap]::new($img_bg.width,$img_bg.height)
  7. $img_canvas=[drawing.graphics]::fromimage($new_image)
  8. $img_canvas.InterpolationMode=[Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
  9. $img_canvas.drawimage($img_wechat,$new_image.width-400,$new_image.height-300,400,300,)
  10. $img_canvas.drawimage($img_alipay,$new_image.width-400*2,$new_image.height-300,400,300,)
  11. $new_image.save( 'new'+[datetime]::now.GetHashCode().tostring()+'.jpg',[Drawing.Imaging.ImageFormat]::Jpeg)
  12. $img_canvas.dispose();$new_image.dispose();
  13. $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下面插入一行
  1. [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://bbs.bathome.net/) Powered by Discuz! 7.2