Aqui, vamos explorar algoritmos básicos, tanto para criar uma versão meio-tom colorida da imagem orignial, quanto para a geração da versão em preto e branco literalmente, ou seja, contendo apenas essas 2 cores.
Então, vamos ao código. Há 2 funções ColorHalfTone e BWHalfTone, que geram, respectivamente, as versões meio-tom colorida e em preto e branco da imagem original.
Function ColorHalfTone([System.Drawing.Image]$Img) { Write-Host -ForegroundColor Green "Aplicando efeito ColorHalfTone na imagem..." Write-Host -ForegroundColor Green "Será salvo na mesma pasta um arquivo NomeOriginal_HalfTone.jpg" [Int32]$p=0 Foreach($y in (0..($Img.Height-1))) { $p++ If ($p -gt (($Img.Height)*0.05)) { Write-Host -NoNewLine '.' $p = 0 } Foreach($x in (0..($Img.Width-1))) { $ColorPixel = $Img.GetPixel($x,$y) ## COLOR HALFTONE If ($ColorPixel.R -gt 127) { $R = 255 } Else { $R = 0} If ($ColorPixel.G -gt 127) { $G = 255 } Else { $G = 0} If ($ColorPixel.B -gt 127) { $B = 255 } Else { $B = 0} ## SetPixel para efeito ColorHalfTone $A = $ColorPixel.A $Img.SetPixel($x,$y,[System.Drawing.Color]::FromArgb([Int32]$A,[Int32]$R,[Int32]$G,[Int32]$B)) } ## ForEach $x } ## ForEach $y } ## EndFunction ColorHalfTone Function BWHalfTone([System.Drawing.Image]$Img) { Write-Host -ForegroundColor Green "Aplicando efeito BlackWhite HalfTone na imagem..." Write-Host -ForegroundColor Green "Será salvo na mesma pasta um arquivo NomeOriginal_HalfTone.jpg" [Int32]$p=0 Foreach($y in (0..($Img.Height-1))) { $p++ If ($p -gt (($Img.Height)*0.05)) { Write-Host -NoNewLine '.' $p = 0 } Foreach($x in (0..($Img.Width-1))) { $ColorPixel = $Img.GetPixel($x,$y) ## BLACKWHITE HALFTONE $R = (0.2125*$ColorPixel.R)+(0.7154*$ColorPixel.G)+(0.0721*$ColorPixel.B) If ($R -gt 127) { $R = 255 } Else { $R = 0} $G = (0.2125*$ColorPixel.R)+(0.7154*$ColorPixel.G)+(0.0721*$ColorPixel.B) If ($G -gt 127) { $G = 255 } Else { $G = 0} $B = (0.2125*$ColorPixel.R)+(0.7154*$ColorPixel.G)+(0.0721*$ColorPixel.B) If ($B -gt 127) { $B = 255 } Else { $B = 0} ## SetPixel para efeito BlackWhite HalfTone $A = $ColorPixel.A $Img.SetPixel($x,$y,[System.Drawing.Color]::FromArgb([Int32]$A,[Int32]$R,[Int32]$G,[Int32]$B)) } ## ForEach $x } ## ForEach $y } ## EndFunction BWHalfTone $Arquivo = New-Object System.Windows.Forms.OpenFileDialog $Arquivo.filter = "Imagens (*.PNG;*.BMP;*.JPG;*.JPEG;*.GIF)|*.PNG;*.BMP;*.JPG;*.JPEG;*.GIF" $Arquivo.ShowDialog() | Out-Null #$Ext = ($Arquivo.filename).Substring(($Arquivo.filename).Length-3,3) $ArquivoSemExt = ($Arquivo.filename).Substring(0,($Arquivo.filename).Length-4) $Img = [System.Drawing.Image]::FromFile($Arquivo.filename) Clear-Host Write-Host "##############################################" Write-Host "Arquivo de Imagem:"$Arquivo.filename Write-Host "##############################################" ColorHalfTone $Img #BWHalfTone $Img Write-Host "" Write-Host -ForegroundColor Yellow "Conversão concluída!" $Img.Save($ArquivoSemExt+"_HalfTone.jpg","JPEG") $Img.Dispose()
Nenhum comentário:
Postar um comentário