gpt4 book ai didi

arrays - 在 PowerShell 中调整字节数组图像的大小

转载 作者:行者123 更新时间:2023-12-01 23:08:10 29 4
gpt4 key购买 nike

我尝试在不保存临时文件的情况下在 PowerShell 中调整图像大小,然后将其保存到 Active Directory。

我从数据库中获取一个字节数组(我无法控制发送给我的内容)并且我可以像这样轻松地将其保存为文件:

[System.Io.File]::WriteAllBytes("C:\PathToFile\img.jpg", $PhotoArray)

我需要做的是调整图像大小,然后更新 Active Directory 中的缩略图。我可以使用原始文件执行此操作,因为它已经作为字节数组提供给我,如下所示:

Set-ADUser -Identity $UserName -Replace @{thumbnailPhoto=$Photo} -Server $AdServerName

我可以使用以下代码调整图像大小以使其变小:

$Photo_MemoryStream = new-object System.IO.MemoryStream(,$PhotoAsByteArray)
$quality = 75
$bmp = [system.drawing.Image]::FromStream($Photo_MemoryStream)
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[decimal]$canvasWidth = 100.0
[decimal]$canvasHeight = 100.0

$myEncoder = [System.Drawing.Imaging.Encoder]::Quality
$encoderParams = New-Object System.Drawing.Imaging.EncoderParameters(1)
$encoderParams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter($myEncoder, $quality)
$myImageCodecInfo = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders()|where {$_.MimeType -eq 'image/jpeg'}

$ratioX = $canvasWidth / $bmp.Width;
$ratioY = $canvasHeight / $bmp.Height;
$ratio = $ratioY
if($ratioX -le $ratioY){
$ratio = $ratioX
}

$newWidth = [int] ($bmp.Width*$ratio)
$newHeight = [int] ($bmp.Height*$ratio)
$bmpResized = New-Object System.Drawing.Bitmap($newWidth, $newHeight)

$graph = [System.Drawing.Graphics]::FromImage($bmpResized)
$graph.Clear([System.Drawing.Color]::White)
$graph.DrawImage($bmp,0,0 , $newWidth, $newHeight)

$bmpResized.Save("C:\PathToFile\img.jpg",$myImageCodecInfo, $($encoderParams))

如何将 $bmpResized 转换为字节数组以便将其插入到 Active Directory 中?我确信这应该很容易,但我花了很长时间试图找出如何将它转换成字节数组但失败了!

我希望有人能提供我正在寻找的神奇答案:)

最佳答案

我在 C# 中完成了这件事。这在 PowerShell 中确实是一样的,因为您使用 .NET 类来执行此操作。

您仍然会使用.Save,但是to a MemoryStream , 然后使用 MemoryStream.ToArray() ,像这样:

$stream = New-Object System.IO.MemoryStream
$bmpResized.Save($stream, [System.Drawing.Imaging.ImageFormat]::Jpeg)
$byteArray = $stream.ToArray()

这假设您希望所有图像都是 JPEG 格式。

关于arrays - 在 PowerShell 中调整字节数组图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70424125/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com