2011-08-13 8 views
0

color_histogram()によって返されたハッシュへのアクセスに問題があります。画像には白黒のピクセルしかありません。これは非常にイライラです。Rmagickヒストグラムの問題

私は

puts hist.inspect() # returns "{red=0, green=0, blue=0, opacity=0=>779753, red=65535, green=65535, blue=65535, opacity=0=>6679}" 

を行う文書によると、キーは、ピクセルオブジェクトであるので、私は、私は簡単にヒストグラムをアクセスする方法

black = Magick::Pixel.from_color('black') 
white = Magick::Pixel.from_color('white') 

puts black.inspect # red=0, green=0, blue=0, opacity=0 
puts white.inspect # red=65535, green=65535, blue=65535, opacity=0 


puts hist[white] # raises exception: `[]': can't convert Magick::Pixel into Integer (TypeError) 

に任意のアイデアを構築しますか?

おかげ

答えて

0

はあなたのcolor_histogramコールとあなたのhist[white]の間のどこかhistを変更しています。これはbw.pngシンプルな黒と白で私の作品:

> i = Magick::Image.read('bw.png').first 
=> bw.png PNG 100x100 100x100+0+0 DirectClass 8-bit 466b 
> h = i.color_histogram 
=> {red=0, green=0, blue=0, opacity=0=>2342, red=65535, green=65535, blue=65535, opacity=0=>7658} 
> black = Magick::Pixel.from_color('black') 
=> red=0, green=0, blue=0, opacity=0 
> h[black] 
=> 2342 

そして、あなたは「魔術を変換することはできません::整数にピクセル(TypeError例外)」エラーが簡単にアレイを使用して再現されています

> a = [ ] 
=> [] 
> a[black] 
TypeError: can't convert Magick::Pixel into Integer 

ハッシュは単純なアクセスからそのTypeErrorを生成しません。