0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

画像をピクセル数で振り分ける~ついでにリサイズも

Last updated at Posted at 2021-09-03

タイトル通りです:relaxed:
高解像度写真で行き詰まっているための急場しのぎのコード

Get-ImageBasedOnArea.ps1

# 規定面積より大きいピクセル数の画像を取得する
function Get-ImageBasedOnArea{

    # 条件分岐のための規定面積
    param(
        [int]$default = 2000000
    )

    # アセンブリロード
    Add-Type -AssemblyName system.drawing

    # 画像を取得
    $image = New-Object System.Drawing.Bitmap($_.fullname)

    # 画像の縦横幅を取得しピクセル面積を求める
    $width = $image.Width
    $height = $image.Height
    $area = $width * $height

    # ピクセル面積が規定より大きい場合、$_を返す
    if($area -gt $default){
        return $_
    }

    $image.Dispose()
}

Windowsのペイントツールで開かない画像が出てきたためこんなことをしています。
加えて画像のリサイズも

Resize-Image.ps1
# 規定面積へ画像をリサイズ
function Resize-Image{

    # ダウンサイジングの規定面積
    param(
        [int]$down_area = 1500000
        )

    # アセンブリロード
    Add-Type -AssemblyName system.drawing

    # 画像を取得
    $image = New-Object System.Drawing.Bitmap($_.fullname)

    # 画像の面積の平方根を取得 => $square
    $square = [Math]::Sqrt($image.Width * $image.Height)

    # ダウンサイジング規定面積の平方根 => $down_square
    $down_square = [Math]::Sqrt($down_area)

    # ダウンサイジング後の縦横幅
    $ratio = $down_square / $square
    [int]$new_width = $image.Width * $ratio
    [int]$new_height = $image.Height * $ratio

    # ダウンサイジング後のオブジェクトを作成 => $canvas
    $canvas = New-Object System.Drawing.Bitmap($new_width, $new_height)
    
    # 描画
    $graphics = [System.Drawing.Graphics]::FromImage($canvas)
    $graphics.DrawImage($image, (New-Object System.Drawing.Rectangle(0, 0, $canvas.Width, $canvas.Height)))
    
    # 画像の保存
    $new_name =  $_.basename + "_down.jpg"
    $path = Join-Path $_.DirectoryName -ChildPath $new_name
    $canvas.Save($path,[System.Drawing.Imaging.ImageFormat]::Jpeg)

    # オブジェクト破棄
    $graphics.Dispose()
    $canvas.Dispose()
    $image.Dispose()

}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?