duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
# font, font_size, scale, spacing; key_color
class Montage:
def __init__(self, cfg, size):
self.font = cfg.font; self.scale = cfg.scale; self.spacing = cfg.spacing
self.text = cfg.text
self.key_color = cfg.key_color; self.calc_draw_color = cfg.calc_draw_color

self.newSize = tuple(int(sz*cfg.scale) for sz in size)
self.refreshLayout()
def refreshLayout(self):
if len(self.text) == 0: return
self.layout = solveItemLayout(self.newSize, self.font.getsize(self.text[0]), self.scale, self.spacing)

def runOn(self, image):
areas = solveItemColors(image, self.layout)
newImage = Image.new(image.mode, self.newSize, self.key_color)
drawTextMontage(newImage, areas, cycle(self.text), self.font, self.calc_draw_color)
return newImage

#Python #code 总的弄了一个 MontagerunOn,目的是复用 refershLayout 可提供的信息
runOn 的逻辑很简单,就是新建一个 mode 一样的 image,然后求颜色、作画。

calc_draw_color 也被合并到 cfg 动态对象里去了
Forwarded from dnaugsuz
草,原来绘制和矩阵处理天生不兼容 #CV #Python #visualize
反正我是熟悉 n m y x i j 那一套
可以把 for (i=0; i<n; i++) 套到 绘制程序里

我们只需要往 i, n 扩展一个 j, m 就可以处理项目和 y, x 不匹配的情况
然后矩阵处理又是另一种情况,没有 w,h 什么的
t0 = time()
t1 = None

def nextPitch():
try: return next(pitchz)
except StopIteration: raise NonlocalReturn("done")
def doSplit():
synth.noteSwitch(nextPitch())
def giveSegment():
nonlocal t1
t2 = time()
reducer.accept( (t1-t0, t2-t0, synth.last_pitch) )
t1 = t2 #< new start

def onEvent(event):
nonlocal t1
if event.type == pygame.KEYDOWN:
key = chr(event.key)
if key == 'a':
t1 = time()
doSplit()
elif key == 's': giveSegment(); doSplit()
elif event.type == pygame.KEYUP:
key = chr(event.key)
if key == 'a':
synth.noteoff()
giveSegment()
elif key == ' ': onPausePlay()
#Python #code
#Python #code #rewrite

coloredText = StringBuild() # use io.StringIO, equiv []; b''.join(it)
try:
bsText = dLines['text'].encode('utf-8')
except KeyError:
bsText = b64decode(dLines['bytes'])
iNoFmt = 0
spanRange = lambda sp: (sp['start'], sp['end'])
for (iBeg, iEnd) in map(spanRange, spans):
coloredText.write(bsText[iNoFmt:iBeg])
fmtLink = colored(linked(decode(bsText[iBeg:iEnd]), fpAbs, data['line_number'], iBeg), 9)
#^ 9 可提取常量, fpAbs,lineno,offset 应封装为class
coloredText.write(fmtLink.encode())
iNoFmt = iEnd
coloredText.write(bsText[iNoFmt:])
text = decode(str(coloredText))