2014-04-17 7 views
1

GTK + 2 (pygtk)를 사용하여 파이썬 프로그램을 작성했습니다. 이제 프로그램을 GTK + 3으로 업데이트하려고하므로 pygtk 대신 pyGObject를 사용해야합니다.
내 문제는 GdkPixbuf.Pixbuf 개체의 개별 픽셀에서 색을 가져와야한다는 것입니다.
pygtk에서는 Pixbuf.get_pixels_array()를 사용하여 모든 픽셀을 포함하는 n 배열을 얻을 수 있습니다.
pyGObject에는 Pixbuf.get_pixels_array()가 없으므로 Pixbuf.get_pixels()을 사용해야합니다. 그러면 문자열이 반환됩니다.
누구나이 문자열에서 개별 픽셀을 가져 오는 방법을 알고 있습니까?

(당신이 할 수 있도록 C Pixbuf.get_pixels_array에서()는 포인터를 반환 http://developer.gimp.org/api/2.0/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#image-data을하지만, 파이썬에서 문자열 반환) 돕는

감사합니다.Python PyGObject GdkPixbuf.get_pixels()에서 픽셀 가져 오기

답변

0

문자열이 아니며 바이트 배열입니다. list : mybyte [2 : 4]와 같은 값 (int)을 얻을 수 있습니다. 이것을 인쇄하면, 예, chr() 값이 표시됩니다. 이미지 유형에주의하고 "문자열"의 길이를 확인하십시오. 픽셀 당 4 개의 값 (RGBA), 'RGB'의 JPEG - 3, 'L'-1의 값을가집니다. 값은 범위 0에 있습니다. -255, 보통 때처럼. P.S : 값이 밴드로 분할되지 않습니다. 따라서 jpg의 픽셀 1은 인덱스 0,1,2 픽셀 2의 RGB를 3,4,5 등과 같이 가지고 있습니다.

+0

Ok ... 이상합니다. 그런 개별 픽셀에 액세스 할 수 있지만 픽셀 행 당 2 개의 추가 바이트가있는 것처럼 보입니다. Pixbuf가 내 첫 번째 모니터 (768x1366)의 스크린 샷이지만 1050x1680 모니터의 스크린 샷이 아닌 경우에만 발생합니다. 모니터 하나만 연결해도. – freundTech

+0

조금 더 알아 냈습니다 : 이미지의 너비가 4로 나눌 수있는 경우에만 작동한다고 생각합니다. 이유는 확실하지 않습니다. 나는 이것이 버그라고 생각합니다 ... – freundTech

+0

아닙니다, 이것은 버그가 아닙니다. "보폭"일지 모르지만 모든 것을 보지 않고는 확신 할 수 없습니다. 데이터를 PIL 이미지에 넣고 그 추가 이미지를 수정할 수 있습니까? – cox