通常当我使用 private void loadRecyclerViewData() {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (posts.size() > 0) {
posts.clear();
}
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Post post = ds.getValue(Post.class);
//Getting a specific user's information (nickname purposes)
posts.add(0, post);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
在Wand中写一个句子时,字母间距会被处理掉,但是我需要一次写一个字母来构建文本动画的帧。这样做的问题在于,通过draw.text
移动左侧偏移量(这里是draw.text
命令的documentation),由text_width
给出,字母间距非常大。< / p>
我试图使用提供的其他指标来尝试更好地计算移动偏移的位置以获得更好的字母间距,但是我很难理解它们的含义。
指标是:
draw.get_font_metrics
character_width
character_height
character_width
ascender
descender
text_width
text_height
maximum_horizontal_advance
bounding box: x1
bounding box: y1
bounding box: x2
bounding box: y2
origin: x
以下是包含文字指标的示例图片:
该文本的指标是:
origin: y
除了FontMetrics(character_width=150.0, character_height=150.0, ascender=140.0, descender=-29.0, text_width=133.0, text_height=172.0, maximum_horizontal_advance=527.0, x1=12.90625, y1=0.5, x2=54.296875, y2=78.65625, x=134.0, y=0.0)
(实际上是像素中文本的宽度),通过计算文本的尺寸,我看到由于某种原因,text_width
是两个单词的高度之和, text_height
和character_width
等于我在代码中选择的字体,但图片中的字母远离这些尺寸,character_height
是巨大的,我不知道可以描述什么,maximum_horizontal_advance
和ascender
似乎对于不会偏离文本中间线的字母来说太大了,而且边界框和原点坐标对我来说没有意义。< / p>
我可以找到这个指标的最接近的可视化http://www.imagemagick.org/Usage/text/#font_info但是我从代码中得到的数字似乎不适合这种可视化。
如果有人能对这些数字有所了解,我会非常感激,并建议我如何使用这些指标来获得更好的字母间距,而不仅仅是descender
中draw.text
增加text_width
的左偏移量。
提前感谢大家!
制作该图像的代码是:
from wand.image import Image, COMPOSITE_OPERATORS
from wand.drawing import Drawing
from wand.color import Color
from wand.font import Font
import random, os
imgname = random.choice(os.listdir('/home/gionny/Downloads/HighResImg'))
text = 'Tr'
fontname = random.choice(os.listdir('/home/gionny/Downloads/font'))
with Image(filename='HighResImg/'+imgname) as i:
i.resize(1500,1000)
with Drawing() as draw:
draw.fill_color = Color('#fff')
#draw.stroke_color = Color('#000')
draw.font_size = 150
draw.font = 'font/'+fontname
textWidth = int(i.width*2/3)
textHeight = int(i.height*2/3)
offsetLeft = (i.width - textWidth)/2
offsetTop = (i.height - textHeight)/2
metrics = draw.get_font_metrics(i,text,False)
print(metrics)
draw.text(x = int(offsetLeft), y = int(offsetTop + metrics.text_height/4), body = text)
with Image(filename='logo.gif') as l:
l.resize(80,80)
l.transparentize(0.7)
with Image(width=textWidth, height=textHeight, background=Color("skyblue")) as c:
c.transparentize(0.3)
draw.composite(operator='atop', left=i.width-90, top=i.height-90, width=l.width, height=l.height, image=l)
draw.composite(operator='atop', left=offsetLeft, top=offsetTop, width=c.width, height=c.height, image=c)
draw(i)
i.format = 'jpeg'
i.save(filename='script2.jpg')