Python Imaging Library a zalamování řádků – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python Imaging Library a zalamování řádků – Python – Fórum – Programujte.comPython Imaging Library a zalamování řádků – Python – Fórum – Programujte.com

 

D3jph0
Duch
22. 11. 2008   #1
-
0
-

Zdravím, potřeboval bych pomoct s modulem pil(Python Imaging Library), chci převést text na obrázek,

# -*- coding: utf-8 -*-

import Image,ImageDraw, ImageFont

def input():
global height, width, fontsize, text, filename, font
height = int(raw_input("Vložte výšku obrázku: "))
width = int(raw_input("Vložte šířku obrázku: "))
fontsize = int(raw_input("Vložte velikost písma: "))
font = ImageFont.truetype("arial.ttf", fontsize)
text = raw_input("Vložte text: ")
filename = raw_input("Vložte jméno výsledného souboru: ")

def imagedrawing():
global height, width, fontsize, text, filename, font
image = Image.new("RGB",(width,height))
draw = ImageDraw.Draw(image)
draw.text((1,1), text, font=font)
image.save(open(filename, "wb"), "PNG")

input()
imagedrawing()

to sem ještě zvládl, ale vždy když je text delší než je šířka obrázku, tak se vykreslí mimo = výsledek je nepoužitelný, potřeboval bych aby se to nějak zalamovalo. Hledal sem a myslím že pil to nijak sám asi neumí, tak sem to zkusil napsat nějak sám, ale tam sem zase narazil na problém že bych potřeboval vždy určitý počet proměnných podle situace např text1,text2,....text20 nebo text1,...text5, ale nevím jestli je to vůbec možné.
Předem díky za pomoc :smile1:

Nahlásit jako SPAM
IP: 83.208.158.–
D3jph0
Duch
23. 11. 2008   #2
-
0
-

Tak jsem hledal ale nenašel, ale podařilo se mi napsat něco co by mělo technicky fungovat, ale prostě nefunguje



# -*- coding: utf-8 -*-
import Image,ImageDraw, ImageFont

def input():
global height, width, fontsize, text, filename, font
height = int(raw_input("Vložte výšku obrázku: "))
width = int(raw_input("Vložte šířku obrázku: "))
fontsize = int(raw_input("Vložte velikost písma: "))
font = ImageFont.truetype("arial.ttf", fontsize)
text = raw_input("Vložte text: ")
filename = raw_input("Vložte jméno výsledného souboru: ")
filename = filename + ".png"

def drawing():
global height, width, fontsize, text, filename, font, textlist
textlist = text.split()
tmptext = ""
image = Image.new("RGB", (width,height))
draw = ImageDraw.Draw(image)
start = 0
end = 0
number = 0
print textlist
for x in textlist:
tmptext = tmptext + " " + x
tmptextsize = font.getsize(tmptext)

print tmptextsize
while tmptextsize[0] < height:
end += 1
print end
else:
def textzapis():
global textlist
truetext = ""
for y in textlist[start:end]:
truetext = truetext + " " + y
return truetext
number += 1
draw.text((0,pocet*tmptextsize[1]), textzapis(), font=font)
image.save(open(filename, "wb"), "PNG")

input()
drawing()


Podle mě by to fungovat mělo, ale výsledkem je vždycky jenom černej obrázek, žádnej text :smile10:

Nahlásit jako SPAM
IP: 83.208.158.–
gulag
~ Anonymní uživatel
1 příspěvek
29. 11. 2008   #3
-
0
-

global je fuj
raw_input je fuj v pokusných příkladech
tvému druhému pokusu nerozumím
zkusil jsem něco svého



# -*- coding: utf-8 -*-
import Image,ImageDraw, ImageFont, os

class Picture:
pass

def inputDataDone():
picture.height = 200
picture.width = 400
picture.text = u"Kobyla má malý bok."
picture.textPocetZnaku=len(picture.text)
picture.konstanta = 2
picture.fontsize = int(picture.width/picture.textPocetZnaku*picture.konstanta)
picture.font = ImageFont.truetype("arial.ttf", picture.fontsize)
picture.filename = "textInImage"+".png"

def imagedrawing():
image = Image.new("RGB",(picture.width,picture.height))
draw = ImageDraw.Draw(image)
draw.text((1,1), picture.text, font=picture.font)
image.save(open(picture.filename, "wb"), "PNG")

picture=Picture()
inputDataDone()
imagedrawing()
os.startfile(picture.filename)

Nahlásit jako SPAM
IP: 217.117.216.–
D3jph
~ Anonymní uživatel
3 příspěvky
30. 11. 2008   #4
-
0
-

No jo, čistotou kodu bych se zatim nezabyval, sice děkuju za pokus, ale to stale neřeší můj problém, potřebuju to dát ten text co by přetek na další řádek, ne zmenšit font, ale i přesto děkuju. P.S. Ani já už si nejsem jistý jak byla ta druhá část myšlena :D, ztratil sem se v tom už když sem to psal.

Nahlásit jako SPAM
IP: 88.103.96.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Library file — založil TD

CURL library — založil DaveX

Zalamovani textu — založil tribalcz

Dynamic Link Library... — založil laik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý