PowerShell에서 화면의 임의의 위치에 대한 RGB 값 가져오기(컬러 선택기)
3609 단어 colorPowerShell디자인칼라
개요
PowerShell에서 마우스 커서 위치의 RGB 값을 얻는 스크립트를 만들었습니다 (컬러 피커, 스포이드 도구).
사용법
옵션 기능
코드
ColorPikcer.ps1Add-Type -AssemblyName System.Drawing, System.Windows.Forms
# Bitmap と Graphics オブジェクトを用意しておく (1x1 ピクセル)
$bitmap = New-Object System.Drawing.Bitmap(1, 1)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
# 3 秒間の猶予を与える
Write-Host "Move the cursor to the targt position in 3 seconds..."
Start-Sleep 3
# カーソルの位置 (X, Y 座標) を取得
$dpiScaling = 1.0
$positionX = [System.Windows.Forms.Cursor]::Position.X * $dpiScaling
$positionY = [System.Windows.Forms.Cursor]::Position.Y * $dpiScaling
# カーソルの位置のスクリーンの RGB 値を取得
$graphics.CopyFromScreen($positionX, $positionY, 0, 0, $bitmap.Size)
$pixel = $bitmap.GetPixel(0, 0)
# RGB 値をコンソールに表示
$decValue = "RGB({0}, {1}, {2})" -f $pixel.R, $pixel.G, $pixel.B
$hexValue = "#{0:X2}{1:X2}{2:X2}" -f $pixel.R, $pixel.G, $pixel.B
Write-Host "$decValue, $hexValue"
# 「C」キー押下で、取得した色をクリップボードにセット
Write-Host "Press 'C' to copy the color to the clipboard..." -NoNewLine
if ([Console]::ReadKey().KeyChar -eq 'c')
{
$bitmap16x16 = New-Object System.Drawing.Bitmap(16, 16)
$graphics16x16 = [System.Drawing.Graphics]::FromImage($bitmap16x16)
$graphics16x16.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::NearestNeighbor
$graphics16x16.DrawImage($bitmap, 0, 0, 16*2, 16*2)
[Windows.Forms.Clipboard]::SetImage($bitmap16x16)
}
실행 결과
Move the cursor to the targt position in 3 seconds...
RGB(89, 187, 12), #59BB0C
Press 'C' to copy the color to the clipboard...C
클립보드에 설정된 이미지: ( #59BB0C )
메모
Add-Type -AssemblyName System.Drawing, System.Windows.Forms
# Bitmap と Graphics オブジェクトを用意しておく (1x1 ピクセル)
$bitmap = New-Object System.Drawing.Bitmap(1, 1)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
# 3 秒間の猶予を与える
Write-Host "Move the cursor to the targt position in 3 seconds..."
Start-Sleep 3
# カーソルの位置 (X, Y 座標) を取得
$dpiScaling = 1.0
$positionX = [System.Windows.Forms.Cursor]::Position.X * $dpiScaling
$positionY = [System.Windows.Forms.Cursor]::Position.Y * $dpiScaling
# カーソルの位置のスクリーンの RGB 値を取得
$graphics.CopyFromScreen($positionX, $positionY, 0, 0, $bitmap.Size)
$pixel = $bitmap.GetPixel(0, 0)
# RGB 値をコンソールに表示
$decValue = "RGB({0}, {1}, {2})" -f $pixel.R, $pixel.G, $pixel.B
$hexValue = "#{0:X2}{1:X2}{2:X2}" -f $pixel.R, $pixel.G, $pixel.B
Write-Host "$decValue, $hexValue"
# 「C」キー押下で、取得した色をクリップボードにセット
Write-Host "Press 'C' to copy the color to the clipboard..." -NoNewLine
if ([Console]::ReadKey().KeyChar -eq 'c')
{
$bitmap16x16 = New-Object System.Drawing.Bitmap(16, 16)
$graphics16x16 = [System.Drawing.Graphics]::FromImage($bitmap16x16)
$graphics16x16.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::NearestNeighbor
$graphics16x16.DrawImage($bitmap, 0, 0, 16*2, 16*2)
[Windows.Forms.Clipboard]::SetImage($bitmap16x16)
}
Move the cursor to the targt position in 3 seconds...
RGB(89, 187, 12), #59BB0C
Press 'C' to copy the color to the clipboard...C
클립보드에 설정된 이미지: ( #59BB0C )
메모
작동 상태:
DPI 의 스케일링치를 100% 보다 큰 값으로 설정하고 있으면,
[System.Windows.Forms.Cursor]::Position
의 위치가 어긋나 버린다.스크립트에서 변수
$dpiScaling
의 값을 변경하여이 편차를 수정할 수 있습니다.예. 스케일링 값을 150%로 설정한 경우 다음과 같이 변경합니다.
$dpiScaling = 1.5
단점:
기타:
Dispose()
은 제대로 쓰는 편이 좋을지도 모른다. Write-Host
의 -BackgroundColor
옵션을 사용해, 색의 견본이 콘솔에 표시할 수 있으면 편리했지만, 이 옵션으로 지정할 수 있는 것은 "magenta"
이나 "yellow"
등의 고정 16 색 뿐이었다. Reference
이 문제에 관하여(PowerShell에서 화면의 임의의 위치에 대한 RGB 값 가져오기(컬러 선택기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/saggie/items/37c7f2e257d69f237585텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)