回答編集履歴

3

2021/03/26 23:55

投稿

退会済みユーザー
test CHANGED
@@ -90,7 +90,7 @@
90
90
 
91
91
  ・クラス共通の変数(クラス変数)はglobalで指定するのはなく、「クラス名.メソッド名」でアクセスします。
92
92
 
93
- 上の例だと、`font=Component.font`
93
+ 上の例だと、`font=Component.font`とする)
94
94
 
95
95
 
96
96
 

2

2021/03/26 23:55

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- ちゃんと動くコードは下記になります。
1
+ 多分ちゃんと動くであろうコードは下記になります。
2
2
 
3
3
  ```
4
4
 

1

修正

2021/03/26 23:54

投稿

退会済みユーザー
test CHANGED
@@ -1,13 +1,111 @@
1
- font = ImageFont(DefaultFontName, DefaultFontSize)
1
+ ちゃんと動くコードは下記になります。
2
-
3
-
4
2
 
5
3
  ```
6
4
 
5
+ from PIL import Image, ImageFont, ImageDraw
6
+
7
+ import datetime
8
+
9
+ import random
10
+
11
+
12
+
13
+ class Component():
14
+
15
+
16
+
17
+ # フォントの設定は他のメソッドでも使うので
18
+
19
+ # 共用させるために、この位置で宣言しました
20
+
21
+ # -------------------------------------------
22
+
23
+ DefaultFontName = "KikaiChokokuJIS.otf"
24
+
25
+ DefaultFontSize = 40
26
+
7
- font = ImageFont.truetype(DefaultFontName, DefaultFontSize)
27
+ font = ImageFont.truetype(DefaultFontName, DefaultFontSize)
28
+
29
+
30
+
31
+ def __init__(self, mode="RGB", size=(1920,1020),bkcolor=(203,0,0)):
32
+
33
+ self.mode = mode
34
+
35
+ self.size = size
36
+
37
+ self.bkcolor = bkcolor
38
+
39
+ self.image = Image.new(self.mode,self.size,self.bkcolor)
40
+
41
+ self.draw = ImageDraw.Draw(self.image)
42
+
43
+ self.image.save("templates/static/images/test.jpg", quality=85)
44
+
45
+ self.image.save("test.jpg", quality=85)
46
+
47
+
48
+
49
+ def DrawBox(self, pos_x,pos_y,fill=(128,128,128),outline=(50,50,50),title="Default"):
50
+
51
+ self.pos_x = pos_x
52
+
53
+ self.pos_y = pos_y
54
+
55
+ self.title = title
56
+
57
+
58
+
59
+ self.draw.rectangle((self.pos_x,self.pos_y,self.pos_x+300,self.pos_y+300),
60
+
61
+ fill=fill,
62
+
63
+ outline=outline,
64
+
65
+ width=5)
66
+
67
+ self.draw.text((self.pos_x,self.pos_y),self.title,fill=(255,255,255),font=Component.font)
68
+
69
+
70
+
71
+ def Output(self):
72
+
73
+ code = str(random.random() * 1000)
74
+
75
+ return "test.jpg/?=" + code
76
+
77
+
78
+
79
+ test_image = Component()
80
+
81
+ test_image.DrawBox(10, 10)
82
+
83
+ print(test_image.Output())
84
+
85
+
8
86
 
9
87
  ```
10
88
 
11
89
 
12
90
 
91
+ ・クラス共通の変数(クラス変数)はglobalで指定するのはなく、「クラス名.メソッド名」でアクセスします。
92
+
93
+ 上の例だと、`font=Component.font`
94
+
95
+
96
+
97
+ ・「recangle」 → 「rec*t*angle」に修正。
98
+
99
+
100
+
101
+ ・datetimeオブジェクトはそのままではdraw.text関数に渡せないので、strでキャストする等して文字列に変換する必要があります。
102
+
103
+ ・下から2行目ですが、Componentを作るだけでは画像ファイルは生成されないため、
104
+
105
+ DrawBox()関数を呼び出す必要があります。
106
+
107
+ ・print(test_image) とすると「<__main__.Component object at 0x00000XXXXXXXX>」と表示されてしまうため、(おそらく)意図する動作をさせるには、
108
+
109
+ print(test_image.Output())
110
+
13
- に修正した場合どうでしょうか
111
+ 賭する必要があります