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. 【Amadeus原创】wordpress批量更新图片路径的方法

    连上wordpress数据库,怼一句: UPDATE wp_posts SET post_content = REPLACE( post_content, '旧域名', '新域名' );

  2. [WPF UI] 为 AvalonDock 制作一套 Fluent UI 主题

    AvalonDock 是我这些天在为自己项目做技术选型时发现的一个很好的开源项目,它是一个用于 WPF 的布局控件库,可以帮助我们实现类似 Visual Studio 的布局效果.因为它自带的一些样式 ...

  3. 待遇任务执行器(dy-task-actuator-simple)文档

    待遇任务执行器(dy-task-actuator-simple)文档 简介 简称 dtas 吧.这是一个尚在起步但无需太多功能的执行器. 心血来潮,做了一个任务执行器,倒不是一定要重复造轮子,而是没有 ...

  4. 【Python自动化】selenium简单应用

    准备工作 查询浏览器版本 chrome://version/ 下载驱动 https://chromedriver.storage.googleapis.com/index.html 下载的驱动版本要和 ...

  5. Qt/C++原创项目作品精选(祖传原创/性能凶残)

    00 前言说明 从事Qt开发十年有余,一开始是做C#.NET开发的,因为项目需要,转行做嵌入式linux开发,在嵌入式linux上做可视化界面开发一般首选Qt,当然现在可选的方案很多比如安卓,但是十多 ...

  6. 即时通讯技术文集(第19期):IM架构设计基础知识合集 [共13篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第19 期. [-1-] 微信后台基于时间序的新一代海量数据存储架构的设计实践 [链接] htt ...

  7. 思维导图学《Java性能权威指南》

    目录 性能测试 Java 性能调优工具箱 JIT 编译器 垃圾收集 原生内存 线程与同步的性能 Java API 技巧 GitHub LeetCode 项目 目录 YANO SPACE 2021 计划 ...

  8. Ubuntu 16.04 配置Windows 远程桌面(RDP & Unity Desktop)

    网上大多数方法安装完成后不是连不上就是花屏或者桌面环境变了,本方法可以解决以上问题. 一键配置脚本: 运行前chmod +x xrdp-installer-1.2.2.sh 添加权限,执行时不需要ro ...

  9. Solution -「CF 1290F」Making Shapes

    \(\mathscr{Description}\)   给定平面向量集 \(\newcommand{\vct}[1]{\boldsymbol{#1}}\{\vct v_n\}\),求从 \((0,0) ...

  10. 第八章 AtomicInteger源码解析

    1.原子类 可以实现一些原子操作 基于CAS 下面就以AtomicInteger为例. 2.AtomicInteger 在没有AtomicInteger之前,对于一个Integer的线程安全操作,是需 ...