Powershell一直是我的学习目标。做一个小例子。PowerShell实现读取照片并做灰度处理。还想要保存这张灰度照片并直接打开查看。

分析需求:

【读取照片】  需要借助.net framework中的程序集 System.Drawing

【灰度处理】  需要做图像处理----灰度处理,需要重新计算每个像素信息,使用灰阶转换公式  L = 0.299*R + 0.587*G + 0.114*B

【保存照片】  同样需要System.Drawing程序集

【打开文件】  使用  Invoke-Item  命令  或者 

设计脚本:

Add-Type -AssemblyName System.Drawing

# 定义根目录下的图片路径(假设文件名为 input.jpg)
$inputPath = Join-Path $PSScriptRoot "input.jpg"
$outputPath = Join-Path $PSScriptRoot "output.jpg" # 检查输入文件是否存在
if (-not (Test-Path $inputPath)) {
Write-Host "错误:根目录下未找到 input.jpg 文件!"
exit
} try {
# 加载原始图片
$originalImage = [System.Drawing.Bitmap]::FromFile($inputPath)
# 创建灰度图像对象
$grayImage = New-Object System.Drawing.Bitmap($originalImage.Width, $originalImage.Height) # 遍历每个像素进行灰度化处理
for ($x = 0; $x -lt $originalImage.Width; $x++) {
for ($y = 0; $y -lt $originalImage.Height; $y++) {
$pixel = $originalImage.GetPixel($x, $y)
# 计算灰度值(加权平均法)
$grayValue = [int](0.299 * $pixel.R + 0.587 * $pixel.G + 0.114 * $pixel.B)
$grayColor = [System.Drawing.Color]::FromArgb($grayValue, $grayValue, $grayValue)
$grayImage.SetPixel($x, $y, $grayColor)
}
} # 保存黑白图片
$grayImage.Save($outputPath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
Write-Host "已生成黑白图片:$outputPath" # 使用默认程序展示图片
Invoke-Item $outputPath
}
catch {
Write-Host "处理过程中发生错误:$_"
}
finally {
# 释放资源
if ($originalImage) { $originalImage.Dispose() }
if ($grayImage) { $grayImage.Dispose() }
}

PS:  

 $grayValue = [int](0.299 * $pixel.R + 0.587 * $pixel.G + 0.114 * $pixel.B)

其中,grayValue 是灰阶值,R、G、B分别是红色、绿色和蓝色通道的值。这个公式是基于人眼对不同颜色敏感度的研究结果得出的。在这个公式中,绿色的权重最高,因为人眼对绿色最为敏感,其次是红色,最后是蓝色。这种权重分配在早期电视技术中被采纳,以模拟人眼感知亮度的方式优化信号传输。

ok!   脚本运行后,会在其根目录下生成 output.jpg 文件,系统会使用默认软件打开该图片文件,可看到最后效果。下面给出参考结果。

     

PowerShell实现读取照片并做灰度处理的更多相关文章

  1. java读取照片信息 获取照片拍摄时的经纬度

    项目结构 源码:ImageInfo.zip 第一步:添加需要的架包metadate-extractor.jar 架包下载地址:https://code.google.com/p/metadata-ex ...

  2. Android、iOS、和Web如何做灰度发布?

        主要参考了: https://www.zhihu.com/question/21714205     https://www.zhihu.com/question/28296375  一.概述 ...

  3. Python 读取照片的信息:拍摄时间、拍摄设备、经纬度等,以及根据经纬度通过百度地图API获取位置

    通过第三方库exifread读取照片信息.exifread官网:https://pypi.org/project/ExifRead/ 一.安装exifreadpip install exifread ...

  4. android调用照相机拍照获取照片并做简单剪裁

    引用转载http://www.cnblogs.com/eyu8874521/archive/2012/07/20/2600697.html 效果: 客服端代码:   package com.cn.lx ...

  5. SharePoint自动化系列——通过PowerShell在SharePoint中批量做数据

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ PowerShell是基于.NET的一门脚本语言,对于SharePoint一些日常操作支持的很好. ...

  6. python 编程中的一个关于图片的库 imageio (读取照片RGB内容,转换照片格式)

    最近在看机器学习方面的东西,经常遇到需要把某个类型的照片中 RGB 内容读取出来, 在python中照片显示用matplotlib就可以做到,但是导入不同格式的照片,保持出不同格式的照片numpy, ...

  7. 在Android 上运行 openCV ,并做灰度变化的一个例子

    OpenCVImageProcessing1. 导入Opencv的 androrid SDK灰度算法 OpenCVImageProcessing 导入opencv Jar包,配置OpenCVLibra ...

  8. Python小列子-读取照片位置

    Python exifread Python利用exifread库来解析照片的经纬度,对接百度地图API显示拍摄地点. import exifread import re import json im ...

  9. 小程序 读取照片 EXIF 元信息

    安装 exif.js npm install exif-js --save UI <button type="primary" @click="onExif&quo ...

  10. C#&.Net干货分享-构建Aocr_ImageHelper读取图片文字做解析

    直接源码,就是这么干脆... namespace Frame.Image{    /// <summary>    ///     /// </summary>    publ ...

随机推荐

  1. 【Android】谷歌应用关机闹钟 PowerOffAlarm 源码分析,并实现定时开、关机

    前言 RTC RTC 即实时时钟(Real-Time Clock),主要是功能有: 时间保持:RTC可以在断电的时候,仍然保持计时功能,保证时间的连续性 时间显示与设置:RTC可以向系统提供年.月.日 ...

  2. SAGA/TCC 就是 WORKFLOW!!!

    SAGA TCC 的本质就是一个 workflow, 用 activiti, conductor 或 zeebee 都可以实现. saga, tcc 依赖的状态机模型在 workflow 引擎一直在用 ...

  3. 【数据库】MongoDB服务启动失败的问题。

    1.确保MongoDB所在文件夹拥有所有权限 2.确保打开CMD窗口是以管理员身份运行的 3.配置文件中的路径应该为完整路径,且不包含空格和特殊字符(不建议包含) systemLog: destina ...

  4. python 检测免费代理ip是否有效

    python 检测免费代理ip是否有效,免费ip获取地址https://www.zdaye.com/free/ import requests IPAgents = [ "218.89.51 ...

  5. Qt开发经验小技巧261-265

    代码中判断当前Qt库是32位还是64位,用QSysInfo::WordSize=32/64. QTreeView控件设置左侧branch图标大小,无法通过qss设置,万能大法查看源码得知控制宽度最后取 ...

  6. Python 潮流周刊#83:uv 的使用技巧(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. 基于NVIDIA NGC容器安装使用PaddlePaddle

    基于NVIDIA NGC容器安装使用PaddlePaddle PaddlePaddle PaddlePaddle作为国内首个自主研发的深度学习平台,自2016年正式向专业社区开源,是一个技术先进.功能 ...

  8. Linux安装配置Go语言

    Linux安装配置Go语言 官网:https://go.dev/dl/ 从官网下载,选择linux下载压缩包. sudo cp -r go/ /usr/local sudo gedit /etc/pr ...

  9. CDS标准视图:维修工单实际成本数据 I_MaintOrderActualCostDataCube

    视图名称:维修工单实际成本数据 I_MaintOrderActualCostDataCube 视图类型:基础 视图代码: 点击查看代码 @VDM.viewType: #COMPOSITE @AbapC ...

  10. unity assetbundle 加载图集的所有sprite图片

      在 Unity 中,使用 AssetBundle 加载图集(Atlas)并获取其中的所有 Sprite 图片,通常需要以下步骤: 1. 打包图集到 AssetBundle 首先,确保你的图集(At ...