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

[问题求助] [已解决]PowerShell怎样给图片左右两边加上蓝色?

本帖最后由 czjt1234 于 2024-5-29 05:31 编辑
  1. Add-Type -AssemblyName System.Drawing
  2. function Cover-Image {
  3.     param(
  4.         [string]$ImagePath,
  5.         [int]$TopCover,
  6.         [int]$BottomCover
  7.     )
  8.     $originalImage = [System.Drawing.Image]::FromFile($ImagePath)
  9.     $originalHeight = $originalImage.Height
  10.     $originalWidth = $originalImage.Width
  11.     $graphics = [System.Drawing.Graphics]::FromImage($originalImage)
  12.     $whiteBrush = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::White)
  13.     $graphics.FillRectangle($whiteBrush, 0, 0, $originalWidth, $TopCover)
  14.     $graphics.FillRectangle($whiteBrush, 0, $originalHeight - $BottomCover, $originalWidth, $BottomCover)
  15.     $coveredImagePath = [System.IO.Path]::ChangeExtension($ImagePath, "covered.jpg")
  16.     $originalImage.Save($coveredImagePath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
  17. }
  18. # 白色覆盖顶部100像素,底部150像素
  19. $topCover = 100
  20. $bottomCover = 150
  21. dir *.jpg | ForEach-Object {
  22.     Cover-Image -ImagePath $_.FullName -TopCover $topCover -BottomCover $bottomCover
  23.     }
复制代码
这是buyiyang的覆盖图片上下为白色的脚本,测试可行
现在我想给图片左右两边附加上蓝色,不是覆盖而是添加,请问要怎么修改?

QQ 20147578

回复 5# czjt1234


    额,是图片dpi跟默认的96不同
2楼代码21行后添加一行
  1. $new_image.SetResolution($originalImage.HorizontalResolution,$originalImage.VerticalResolution)
复制代码
1

评分人数

TOP

回复 4# Five66


我截屏在画图里保存为一个jpg,可以生成正确的,左右都有

链接: https://pan.baidu.com/s/1SGW_xNcEx68wXJ9uwCr7HQ?pwd=7ere 提取码: 7ere 复制这段内容后打开百度网盘手机App,操作更方便哦
但是类似的图片,试了好几个都不行,只有左边有添加
我传了一个到网盘,你可以试一下

QQ 20147578

TOP

回复 3# czjt1234

额,难道不是这样???

TOP

回复 2# Five66


    左边成功添加了,但是右边没有添加

QQ 20147578

TOP

新建对应大小的birmap,填充颜色后将原图贴上去,比如下面的
  1. Add-Type -AssemblyName System.Drawing
  2. function Cover-Image {
  3.     param(
  4.         [string]$ImagePath,
  5. #        [int]$TopCover,
  6. #        [int]$BottomCover,
  7. [int]$leftAdd,
  8. [int]$rightAdd,
  9. [Drawing.Color]$colorAdd
  10.     )
  11.     $originalImage = [System.Drawing.Image]::FromFile($ImagePath)
  12.     $originalHeight = $originalImage.Height
  13.     $originalWidth = $originalImage.Width
  14. #    $graphics = [System.Drawing.Graphics]::FromImage($originalImage)
  15. #    $whiteBrush = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::White)
  16. #    $graphics.FillRectangle($whiteBrush, 0, 0, $originalWidth, $TopCover)
  17. #    $graphics.FillRectangle($whiteBrush, 0, $originalHeight - $BottomCover, $originalWidth, $BottomCover)
  18. #    $coveredImagePath = [System.IO.Path]::ChangeExtension($ImagePath, "covered.jpg")
  19. #    $originalImage.Save($coveredImagePath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
  20. $new_image=[System.Drawing.bitmap]::new($originalWidth+$leftAdd+$rightAdd,$originalHeight,[drawing.imaging.PixelFormat]::Format32bppArgb)
  21. $img_brush=New-Object System.Drawing.SolidBrush($colorAdd)
  22. $img_canvas=[System.Drawing.Graphics]::FromImage($new_image)
  23. $img_canvas.FillRectangle($img_brush,0,0,$new_image.width,$new_image.height)
  24. $img_canvas.DrawImage($originalImage,$leftAdd,0)
  25. $new_path = [System.IO.Path]::ChangeExtension($ImagePath, "covered.jpg")
  26. $new_image.Save($new_path, [System.Drawing.Imaging.ImageFormat]::Jpeg)
  27. }
  28. # 白色覆盖顶部100像素,底部150像素
  29. #$topCover = 100
  30. #$bottomCover = 150
  31. # 用MidnightBlue色,左边添加100像素,右边150像素
  32. $left_add = 100
  33. $right_add=150
  34. $color_add=[System.Drawing.Color]::MidnightBlue
  35. dir *.jpg | ForEach-Object {
  36. #    Cover-Image -ImagePath $_.FullName -TopCover $topCover -BottomCover $bottomCover
  37. Cover-Image -ImagePath $_.FullName -leftAdd $left_add -rightAdd $right_add -colorAdd $color_add
  38.     }
复制代码

TOP

返回列表