teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

もうちょっとPythonicに

2019/08/04 02:17

投稿

YouheiSakurai
YouheiSakurai

スコア6151

answer CHANGED
@@ -5,9 +5,8 @@
5
5
 
6
6
  user32 = windll.LoadLibrary("user32.dll")
7
7
  gdi32 = windll.LoadLibrary("gdi32.dll")
8
- hdc = user32.GetDC(None)
9
8
 
10
- def getrgb(x, y):
9
+ def getrgb(x, y, hdc=user32.GetDC(None)):
11
10
  bgr = gdi32.GetPixel(hdc, x, y)
12
11
  return bgr.to_bytes(3, "little")
13
12
 

3

ちゃんと速さを追い求めて

2019/08/04 02:17

投稿

YouheiSakurai
YouheiSakurai

スコア6151

answer CHANGED
@@ -3,13 +3,14 @@
3
3
  ```python
4
4
  from ctypes import windll
5
5
 
6
- x, y = 10, 10
7
-
8
6
  user32 = windll.LoadLibrary("user32.dll")
9
7
  gdi32 = windll.LoadLibrary("gdi32.dll")
10
8
  hdc = user32.GetDC(None)
11
- bgr = gdi32.GetPixel(hdc, x, y)
12
- r, g, b = bgr.to_bytes(3, "little")
13
9
 
10
+ def getrgb(x, y):
11
+ bgr = gdi32.GetPixel(hdc, x, y)
12
+ return bgr.to_bytes(3, "little")
13
+
14
+ r, g, b = getrgb(10, 10)
14
15
  print("R={r}, G={g}, B={b}".format(r=r, g=g, b=b))
15
16
  ```

2

unpackいらなかった

2019/08/04 02:16

投稿

YouheiSakurai
YouheiSakurai

スコア6151

answer CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  ```python
4
4
  from ctypes import windll
5
- from struct import unpack
6
5
 
7
6
  x, y = 10, 10
8
7
 

1

エンディアンの変更

2019/08/04 02:08

投稿

YouheiSakurai
YouheiSakurai

スコア6151

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  gdi32 = windll.LoadLibrary("gdi32.dll")
11
11
  hdc = user32.GetDC(None)
12
12
  bgr = gdi32.GetPixel(hdc, x, y)
13
- b, g, r = bgr.to_bytes(3, "big")
13
+ r, g, b = bgr.to_bytes(3, "little")
14
14
 
15
15
  print("R={r}, G={g}, B={b}".format(r=r, g=g, b=b))
16
16
  ```