Let's write β

プログラミング中にできたことか、思ったこととか

VisualWorksで画像グレイスケール処理~平均値法~

 VisualWorksで画像のグレイスケール処理をやってみました。今回もsumimさんにお世話になりました....

| img newImage |
img := (ImageReader fromFile: '/path/to/your/image/file') image.
newImage := img copyEmpty.
img pixelsDo: [:x :y |
  | pxColor rgbAve newPxColor |
  pxColor := img valueAtPoint: x@y.
  rgbAve := (pxColor red + pxColor green + pxColor blue) / 3.
       newPxColor := (ColorValue red: rgbAve green: rgbAve blue: rgbAve).
  newImage atPoint: x@y put: (img palette indexOfPaintNearest: newPxColor).
].
img inspect.
newImage inspect

これは、単純なグレイスケール処理です。RGBの平均を取っているだけです。



味噌は、indexOfPaintNearestの当たりのようです、ここでPaletteに対応する色が無いとさんざんエラーに泣かされました..