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. 那些年,我们一起追的 WLB

    2019年,那一年,我29岁. 那一年,"996是福报"的言论在网络上引发舆论轩然大波. 那一年,"大小周"."996"."007 ...

  2. Kali Linux上安装Openvas 漏洞分析器

    第一步:安装 apt-get update apt-get install openvas openvas-setup 第二步:自定义密码 openvas-stop #停止openvas服务 open ...

  3. 【Vue】vue基础学习笔记

    目录 基础 差值语法 模板语法 数据绑定 el与data的两种写法 el与data写法1 el写法2:挂载 data写法2:函数式写法 绑定样式 绑定class样式 绑定style样式 条件渲染 基础 ...

  4. sed 指定行后或行前插入

    sed 功能非常强大,这里主要列出一些工作中常用到的举例,以后再追加 示例文本 example.cfg Config = { a = 1, b = 1024, c = { ErrLevel = 4, ...

  5. IDEA自动导包(全局设置)

    选择[File]-->[other settings]-->[settings for new projects](全局设置),然后搜索[Auto Import],勾选以下两个选项即可: ...

  6. Debian 9.5 解决中文显示乱码

    一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在. 1.启动终端 #apt-get install locales 2.重新配置 ...

  7. Qt编写物联网管理平台45-采集数据转发

    一.前言 本系统严格意义上说是一个直连硬件的客户端软件,下面接的modbus协议的设备直接通过网络或者串口和软件通信,软件负责解析数据和存储记录.有时候客户想要领导办公室或者分管这一块的部门经理办公室 ...

  8. Qt编写的项目作品8-视频综合应用示例

    一.功能特点 1.1 基础功能 支持各种音频视频文件格式,比如mp3.wav.mp4.asf.rm.rmvb.mkv等. 支持本地摄像头设备,可指定分辨率.帧率. 支持各种视频流格式,比如rtp.rt ...

  9. Qt编写项目作品27-多线程文件传输

    一.功能特点 多线程收发文件,支持加密传输. 接收端支持监听端口接收文件和主动连接服务器接收文件两种方式. 按照 文件开始符+文件大小+文件内容+文件结束符 逐个分包接收. 可对接收的加密过的文件包进 ...

  10. 20. C++快速入门--并发基础

    参考:<Professional c++>,<并发编程实战> 1 基本概念 1.1 竞争 原子性 "原子"(atomic)操作是指一种不可分割的操作, 即在 ...