Skip to content

Commit 74b1869

Browse files
authored
Add support for Japanese
1 parent 8d67175 commit 74b1869

8 files changed

Lines changed: 60 additions & 2 deletions

File tree

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ include README.md
22
include LICENSE
33
include trdg/fonts/latin/*
44
include trdg/fonts/cn/*
5+
include trdg/fonts/ja/*
56
include trdg/images/*
67
include trdg/dicts/*
78
include trdg/texts/*

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,15 @@ Simplified:
164164

165165
![28](samples/28.jpg "1")
166166

167+
## Create images with Japanese text
168+
169+
It is simple! Just do `trdg -l ja -c 1000 -w 5`!
170+
171+
Output
172+
173+
![29](samples/29.jpg "2")
174+
175+
167176
## Add new fonts
168177

169178
The script picks a font at random from the *fonts* directory.
@@ -173,6 +182,7 @@ The script picks a font at random from the *fonts* directory.
173182
| fonts/latin | English, French, Spanish, German |
174183
| fonts/cn | Chinese |
175184
| fonts/ko | Korean |
185+
| fonts/ja | Japanese |
176186

177187
Simply add/remove fonts until you get the desired output.
178188

samples/29.jpg

4.33 KB
Loading

tests.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,6 +1095,13 @@ def test_generate_chinese_string(self):
10951095

10961096
self.assertTrue(all([l in cn_chars for l in s]))
10971097

1098+
def test_generate_japanese_string(self):
1099+
s = create_strings_randomly(1, False, 1, True, False, False, "ja")[0]
1100+
1101+
ja_chars = [chr(i) for i in range(12288, 12543)] + [chr(i) for i in range(65280, 65519)] + [chr(i) for i in range(19968, 40908)]
1102+
1103+
self.assertTrue(all([l in ja_chars for l in s]))
1104+
10981105
def test_generate_data_with_white_background(self):
10991106
background_generator.plain_white(64, 128).convert("RGB").save(
11001107
"tests/out/white_background.jpg"

trdg/data_generator.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import os
22
import random as rnd
33

4-
from PIL import Image, ImageFilter
4+
from PIL import Image, ImageFilter, ImageStat
55

66
from trdg import computer_text_generator, background_generator, distorsion_generator
77

@@ -174,6 +174,26 @@ def generate(
174174
"RGB", (background_width, background_height), (0, 0, 0)
175175
)
176176

177+
##############################################################
178+
# Comparing average pixel value of text and background image #
179+
##############################################################
180+
try:
181+
resized_img_st = ImageStat.Stat(resized_img, resized_mask.split()[2])
182+
background_img_st = ImageStat.Stat(background_img)
183+
184+
resized_img_px_mean = sum(resized_img_st.mean[:2]) / 3
185+
background_img_px_mean = sum(background_img_st.mean) / 3
186+
187+
if abs(resized_img_px_mean - background_img_px_mean) < 15:
188+
print("value of mean pixel is too similar. Ignore this image")
189+
190+
print("resized_img_st \n {}".format(resized_img_st.mean))
191+
print("background_img_st \n {}".format(background_img_st.mean))
192+
193+
return
194+
except Exception as err:
195+
return
196+
177197
#############################
178198
# Place text with alignment #
179199
#############################

trdg/fonts/ja/TakaoMincho.ttf

7.69 MB
Binary file not shown.

trdg/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def parse_arguments():
5151
"--language",
5252
type=str,
5353
nargs="?",
54-
help="The language to use, should be fr (French), en (English), es (Spanish), de (German), ar (Arabic), cn (Chinese), or hi (Hindi)",
54+
help="The language to use, should be fr (French), en (English), es (Spanish), de (German), ar (Arabic), cn (Chinese), ja (Japanese) or hi (Hindi)",
5555
default="en",
5656
)
5757
parser.add_argument(

trdg/string_generator.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,23 @@ def create_strings_randomly(length, allow_variable, count, let, num, sym, lang):
9696
pool += "".join(
9797
[chr(i) for i in range(19968, 40908)]
9898
) # Unicode range of CHK characters
99+
elif lang == "ja":
100+
pool += "".join(
101+
[chr(i) for i in range(12288, 12351)]
102+
) # unicode range for japanese-style punctuation
103+
pool += "".join(
104+
[chr(i) for i in range(12352, 12447)]
105+
) # unicode range for Hiragana
106+
pool += "".join(
107+
[chr(i) for i in range(12448, 12543)]
108+
) # unicode range for Katakana
109+
pool += "".join(
110+
[chr(i) for i in range(65280, 65519)]
111+
) # unicode range for Full-width roman characters and half-width katakana
112+
pool += "".join(
113+
[chr(i) for i in range(19968, 40908)]
114+
) # unicode range for common and uncommon kanji
115+
# https://stackoverflow.com/questions/19899554/unicode-range-for-japanese
99116
else:
100117
pool += string.ascii_letters
101118
if num:
@@ -106,6 +123,9 @@ def create_strings_randomly(length, allow_variable, count, let, num, sym, lang):
106123
if lang == "cn":
107124
min_seq_len = 1
108125
max_seq_len = 2
126+
elif lang == "ja":
127+
min_seq_len = 1
128+
max_seq_len = 2
109129
else:
110130
min_seq_len = 2
111131
max_seq_len = 10

0 commit comments

Comments
 (0)