This commit is contained in:
@@ -65,32 +65,18 @@ def image_to_tspl_commands(image_path):
|
|||||||
data = bytearray()
|
data = bytearray()
|
||||||
|
|
||||||
# 遍历像素生成数据
|
# 遍历像素生成数据
|
||||||
# 修正逻辑:用户反馈打印出来是负片(黑底白字),说明原有的判断反了。
|
|
||||||
# 我们现在采用完全相反的逻辑。
|
|
||||||
# 之前的逻辑: if pixel == 0: should_print = True (导致背景被打印)
|
|
||||||
# 现在的逻辑: if pixel != 0: should_print = True (即 0不打印,255打印)
|
|
||||||
# 这样背景(通常是0或255,看PIL怎么处理)会被反转。
|
|
||||||
# 如果原图是白底(255)黑字(0),PIL convert('1') 后背景通常是 255,字是 0。
|
|
||||||
# 如果用 if pixel != 0: print -> 背景打(黑),字不打(白)。这还是负片。
|
|
||||||
# 如果之前的逻辑 (pixel==0 -> print) 导致了负片,说明背景走了 print 分支,说明背景是 0。
|
|
||||||
# 这意味着 PIL 读进来的图背景是 0。
|
|
||||||
# 所以如果要背景不打,我们应该:if pixel == 0: no_print.
|
|
||||||
# 所以 if pixel != 0: print.
|
|
||||||
|
|
||||||
# 让我们再加一道保险:ImageOps.invert
|
|
||||||
# 但 ImageOps.invert 不支持 '1' 模式,要先转 'L' 再 invert 再转 '1' 比较好。
|
|
||||||
# 不过既然我们是在 pixel 级别操作,我们可以直接在判断里改。
|
|
||||||
|
|
||||||
for y in range(target_height):
|
for y in range(target_height):
|
||||||
row_bytes = bytearray(width_bytes)
|
row_bytes = bytearray(width_bytes)
|
||||||
for x in range(target_width):
|
for x in range(target_width):
|
||||||
pixel = img.getpixel((x, y))
|
pixel = img.getpixel((x, y))
|
||||||
|
|
||||||
should_print = False
|
should_print = False
|
||||||
# 尝试修复:如果 pixel != 0 (即白色/非黑),则打印?
|
# 修正逻辑:用户反馈打印出来是负片(黑底白字),说明原有的判断反了。
|
||||||
# 不,根据推导,背景如果是 0,那我们要背景不打印,所以 if pixel != 0: print.
|
# 我们现在采用完全相反的逻辑。
|
||||||
# 让我们试试这个逻辑。
|
# 之前的逻辑: if pixel != 0: should_print = True (导致背景被打印)
|
||||||
if pixel != 0:
|
# 现在的逻辑: if pixel == 0: should_print = True (即 0(黑)打印,255(白)不打印)
|
||||||
|
|
||||||
|
if pixel == 0:
|
||||||
should_print = True
|
should_print = True
|
||||||
|
|
||||||
if should_print:
|
if should_print:
|
||||||
|
|||||||
@@ -676,8 +676,17 @@ def generate_image(prompt, progress_callback=None, retry_count=0, max_retries=2)
|
|||||||
from PIL import Image
|
from PIL import Image
|
||||||
img = Image.open(GENERATED_IMAGE_FILE)
|
img = Image.open(GENERATED_IMAGE_FILE)
|
||||||
|
|
||||||
# 缩小到THUMB_SIZE x THUMB_SIZE
|
# 缩小到THUMB_SIZE x THUMB_SIZE,保持比例并居中(防止拉伸)
|
||||||
img = img.resize((THUMB_SIZE, THUMB_SIZE), Image.LANCZOS)
|
img.thumbnail((THUMB_SIZE, THUMB_SIZE), Image.LANCZOS)
|
||||||
|
|
||||||
|
# 创建黑色背景 (240x240)
|
||||||
|
bg = Image.new("RGB", (THUMB_SIZE, THUMB_SIZE), (0, 0, 0))
|
||||||
|
|
||||||
|
# 计算居中位置
|
||||||
|
left = (THUMB_SIZE - img.width) // 2
|
||||||
|
top = (THUMB_SIZE - img.height) // 2
|
||||||
|
bg.paste(img, (left, top))
|
||||||
|
img = bg
|
||||||
|
|
||||||
# 转换为RGB565格式的原始数据
|
# 转换为RGB565格式的原始数据
|
||||||
# 每个像素2字节 (R5 G6 B5)
|
# 每个像素2字节 (R5 G6 B5)
|
||||||
|
|||||||
Reference in New Issue
Block a user