Otevření jpg – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Otevření jpg – Python – Fórum – Programujte.comOtevření jpg – Python – Fórum – Programujte.com

 

Jakub Vojáček
~ Moderátor
0
Grafoman
22. 4. 2006   #1
-
0
-



from Tkinter import*
from PIL import Image, ImageTk
okno=Tk()
platno=Canvas(width=1225,height=950,bg='white')
platno.pack()
a=Label()
a.pack()
if len(sys.argv) > 1:
soubor=sys.argv[1]
image = Image.open(soubor)
photo = ImageTk.PhotoImage(image)
platno.create_image(100,100,image=photo)


mainloop()

Dělám si takovej obrázkovej prohlížeč.Nechápu proč mi to nefunguje:(hod? mi to tadytu error


Traceback (most recent call last):
File "BluPaint.py", line 18, in ?
File "PILImage.pyc", line 1745, in open
IOError: cannot identify image file

nechápu.Prosím pomoc

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
22. 4. 2006   #2
-
0
-

Ta chybová hláška rozhodně nepochází z toho kodu, co jsi sem dal, protože tam 18 řádek ani nemáš ;-)

Ty to budeš načítat z příkazové řádky Proč si to nezjednodušíš, aby ti to nejdříve fungovalo nějak obyčejně (bez té příkazový řádky)? Přímo nějak soubor="BigHero.jpg" ... Samozřejmě že obrázek musí leťet, takto zadaný, ve stejným adresářii, jako script. Proč tam je Label když v něm nic nenáš?



Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
22. 4. 2006   #3
-
0
-

bez načítání z příkazové řádky mi to funguje. 18 řádku tam mám, ale tohle je úryvek...
PS:koukám, že když to nedělám přes exe tak to funguje...Takže se omlouvám, že jsem otravoval....

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Jakub Vojáček
~ Moderátor
0
Grafoman
24. 4. 2006   #4
-
0
-



from Tkinter import*
from PIL import Image, ImageTk
okno=Tk()
platno=Canvas(width=1225,height=950)
platno.pack()
okno.title('BluPaint')
if len(sys.argv) > 1:
try:
soubor=sys.argv[1]
image = Image.open(soubor)
(x,y) = image.size
x1=(x,y)[0]
y1=(x,y)[1]
while x1 > 1220:
x1=x1-1
while y1 > 940:
y1=y1-1
x1=x1-1
image=image.resize((x1, y1))
photo = ImageTk.PhotoImage(image)
obr=platno.create_image(612,475,image=photo)
except:
platno.create_text(612,475,text="Vykresleni se nezdarilo")
mainloop()

tohleto funguje...Ale jak tam přidat funkci, aby to zobrazovalo obrázky ve stejné složce jako ten, který jsem spustil?Chtělo by to jako je


obrazek=PhotoImage(file='neco.gif')
obrazek.configure(file='ano.gif')

má takovou metodu i PIL?Že bych prostě změnil cestu k souboru a ono by se to automaticky updatlo...

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
24. 4. 2006   #5
-
0
-

proměnná obr má určitě nějakou configure, ale není to udělátko, ale prvek na plátně, takže tam se to bude jmenovat jinak.

Jě bych spíš dal celý načítání obrázku do funkce a na plátno, nebo jinam, bych dal tlačítko, který by otevíralo dialog pro výběr souboru, nebo prostě tlačítko Další - a to by samo zjistilo, jaký je další obrázek v aktuální složce a zavolala by se ta funkce.

Takže jestli jsem to dobře odhadl, tak potřebuješ tkFileDialog a/nebo modul os, případně glob. A práci se seznamy, možná

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
24. 4. 2006   #6
-
0
-

jo, používám modul os. Trochu jsem nepochopil jak si myslel dát to do funkce...:error: Když si otevřu ten obrázek, tak se mi do seznamu uloží všechny soubory s podporovanou příponou, ale nevím, jak upravit ten obrázek :pc:

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
24. 4. 2006   #7
-
0
-

[i]Když si otevřu ten obrázek, tak se mi do seznamu uloží všechny soubory s podporovanou příponou,[/i]

Já jsem zas nepochopil, jak to ted myslíš ty :-)

[i]trochu jsem nepochopil jak si myslel dát to do funkce... [/i]

No myslel jsem dát do funkce toto (takhle nebo hodně podobně):

         

soubor=sys.argv[1]
image = Image.open(soubor)
(x,y) = image.size
x1=(x,y)[0]
y1=(x,y)[1]
while x1 > 1220:
x1=x1-1
while y1 > 940:
y1=y1-1
x1=x1-1
image=image.resize((x1, y1))
photo = ImageTk.PhotoImage(image)
obr=platno.create_image(612,475,image=photo)



S tím, že by funkce byla volaná s parametrem jména souboru a to jednak při startu programu a pak přes nějaké to tlačítko, které si vytvoříš...

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
24. 4. 2006   #8
-
0
-

tak abysme si rozum?li, kdy? si otev?u ten obr?zek, tak se vykresl? na Canvas a python zjist? v jak? slo?ce je ten obr?zek a pomoc? funkce os.listdir() zjist?m jak? dal?? soubory jsou ve stejn? slo?ce.
U t? prom?nn? obr je nap??kald metoda coords, ale tou se mi poda?ilopouze pohnout obr?zkem
Do funkce jsem to ji? zkou?el d?t, ale vůbec nic se mi nezobrazilo :skunk:
teda jestli mysl?? n?co jako



def neco():
muj_kod
neco()
:ehh:

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
24. 4. 2006   #9
-
0
-

Asi tam m?? nejakou chybu ;-)

Nen? vhodn?, p?i vytv??en? programu, moc pou??vat try: except: ... proto?e pak skute?n? nev??, kde p?esn? a pro? se ti ta chyba stane. Kdy? p??e? ?e se ti vůbec nic nezobrazilo, tak mo?n? jsi m?l n?jakou chybovou hl??ku, nebo n?co. Dej zkr?cenou uk?zku nefun?n?ho programu sem (bez try) a mo?n? chybu a pak mo?n? se s t?m d? n?co d?lat. Jinak jen m??eme h?dat :-)

[i]U t? prom?nn? obr je nap??kald metoda coords, ale tou se mi poda?ilo pouze pohnout obr?zkem [/i]
je?t? m??e? tak? upravovat parametr image.
http://tkintercz.wz.cz/canvas.htm#Tkinter.Canvas.create_image-method
http://tkintercz.wz.cz/canvas.htm#Tkinter.Canvas.itemconfig-method

Jo a pokud to bude? m?t ve fuknci, je tam mo?n? mal? z?drhel: http://tkintercz.wz.cz/photoimage.htm - to v zelen?m r?me?ku.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
24. 4. 2006   #10
-
0
-



from Tkinter import*
from PIL import Image, ImageTk
okno=Tk()#vytvoření okna
okno.title('BluPaint')#titulek okna
platno=Canvas(width=1225,height=950)#vytvoření Canvasu
platno.pack()#umístění Canvasu
#-------------------------------------------------------------------#
if len(sys.argv) > 1:#Jesliže přijme argument od příkazové řádky
def neco():

soubor=sys.argv[1]#soubor se rovná argumentu od příkazové řádky
image = Image.open(soubor)#otevření obrázku
(x,y) = image.size#zjištění velikosti obrázku
x1=(x,y)[0]#šířka obrázku
y1=(x,y)[1]#výška obrázku
while x1 > 1220:#upravení velikosti
x1=x1-1
while y1 > 940:#upravení velikosti
y1=y1-1
image=image.resize((x1, y1))#konečná úprava - aby se to vešlo na monitor
photo = ImageTk.PhotoImage(image)#vytvoření obrázku pro Tkinter
obr=platno.create_image(612,475,image=photo)#umístění obrázku
neco()
mainloop()#vykresli
#-------------------------------------------------------------------#


Tady to funguje tak, že mi to sice neukáže žádnou chybu, ale nezobrazí se obrázek.

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
24. 4. 2006   #11
-
0
-

1. funkce pat?? na za??tek - je to p?ehledn?j?? a tam mohou vznikat pak "divn?" chyby.

2. mysl?m, ?e chyba - nechyba vznik?, p?i p?evodu z p??kazov? ??dky - zkus si d?vat tisk to parametru nebo tisnkout os.path.exists(...) - mo?n? ?e?tina v n?zvech soubor?.

3. asi nepe?livost? jsi m?l while y: ... zasunuto uvnit? while x: ...

4. NEM?L JSI ZAPRACOV?N M?J POSLEDN? BOD Z MINUL? RADY

5. tohle mi z toho vy?lo (m?m tam ale if len(sys.argv) > 0: , abych zamezil mo?n?m chyb?m z p??kazov? ??dky (+ n?jak? dal?? ?pravy, ale sp??e velikosti nebo um?stn?n?):

# -*- coding: cp1250 -*- 


from Tkinter import*
from PIL import Image, ImageTk

def neco(soubor):
image = Image.open(soubor)#otev?en? obr?zku
(x,y) = image.size#zji?t?n? velikosti obr?zku
x1=(x,y)[0]#???ka obr?zku
y1=(x,y)[1]#v??ka obr?zku
while x1 > 1220:#upraven? velikosti
x1=x1-1
while y1 > 940:#upraven? velikosti
y1=y1-1
image=image.resize((x1, y1))#kone?n? ?prava-aby se to ve?lo na monitor
photo = ImageTk.PhotoImage(image)#vytvo?en? obr?zku pro Tkinter
obr=platno.create_image(0,0,image=photo, anchor=NW)#um?st?n? obr?zku
platno.obrazek=photo # VELMI D?LE?IT?

#-------------------------------------------------------------------#

okno=Tk()#vytvo?en? okna
okno.title('BluPaint')#titulek okna
platno=Canvas()#vytvo?en? Canvasu
platno.pack()#um?st?n? Canvasu

if len(sys.argv) > 0:#Jesli?e p?ijme argument od p??kazov? ??dky
neco("Button.PNG")

mainloop()#vykresli

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
24. 4. 2006   #12
-
0
-

Jo, dík :mikulas:

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
25. 4. 2006   #13
-
0
-

toto



(x,y) = image.size#zji?t?n? velikosti obr?zku
x1=(x,y)[0]#???ka obr?zku
y1=(x,y)[1]#v??ka obr?zku
while x1 > 1220:#upraven? velikosti
x1=x1-1
while y1 > 940:#upraven? velikosti
y1=y1-1


by se dalo napsat takto:


x1,y1=image.size
x1=min(x1,1220)
y1=min(y1,940)


:-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
27. 4. 2006   #14
-
0
-

Lze vytvořit skrolovací obrázek na canvasu s pomocí knihovny PIL?
našel jsem pouze



def roll(image, delta):
"Roll an image sideways"

xsize, ysize = image.size

delta = delta % xsize
if delta == 0: return image

part1 = image.crop((0, 0, delta, ysize))
part2 = image.crop((delta, 0, xsize, ysize))
image.paste(part2, (0, 0, xsize-delta, ysize))
image.paste(part1, (xsize-delta, 0, xsize, ysize))

return image

lze to?

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
27. 4. 2006   #15
-
0
-

Scrollovac? technika je z?le?itost? Tkinter, ne PIL:
http://tkintercz.wz.cz/scrollbar.htm
http://effbot.org/zone/tkinter-scrollbar-patterns.htm

Uk?zka na scrollov?n? Y, X si dotvo? s?m, podle v??e uveden?ch odkaz?:



# -*- coding: cp1250 -*-

from Tkinter import*
from PIL import Image, ImageTk

def vykresli(soubor):
image = Image.open(soubor)
x1, y1 = image.size

while x1 > maxX:
x1=x1-1
while y1 > maxY:
y1=y1-1
image=image.resize((x1, y1))
photo = ImageTk.PhotoImage(image)
obr=platno.create_image(0,0,image=photo, anchor=NW)
platno.obrazek=photo # VELMI D?LE?IT?

#-------------------------------------------------------------------#

maxX=1220
maxY=940

okno=Tk()
okno.title('GeonPaint :-)')

scrollbarY = Scrollbar(okno)
scrollbarY.pack(side=RIGHT, fill=Y)

platno=Canvas(scrollregion=(0, 0, maxX, maxY), yscrollcommand=scrollbarY.set)
platno.pack(fill=BOTH, expand=1)

scrollbarY.config(command=platno.yview)
vykresli("divadlo.jpg")
mainloop()

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Voj??ek
~ Moderátor
0
Grafoman
27. 4. 2006   #16
-
0
-

tak GeonPaint jo!
:bumbum:

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
27. 4. 2006   #17
-
0
-

a ne? :-) nápad jsi sice měl, to je hezký, ale kody jsem více z poloviny tvořil ji. Kdybych ti daval jen slovní rady, asi by jsi rad nebyl! :-) No maximálně jsem ochoten ustoupit na GeonBluePaint. :-)

:rejza:

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Voj??ek
~ Moderátor
0
Grafoman
27. 4. 2006   #18
-
0
-

Tak to jo :ok:

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Jakub Vojáček
~ Moderátor
0
Grafoman
30. 4. 2006   #19
-
0
-

To co teď napíši :pc: , se netýká otevření *.jpg ale jakéhokoliv formátu....

mám kód:



def vykresleni(soubor,misto):
obrazek=PhotoImage(file=soubor)
text.create_image(misto,image=obrazek)
okno.image=obrazek

jde o to, že tady funkce je zavolána několikrát za sebou, ale v závěru se do textu vykreslí jeden obrázek a ty ostatní nejsou vidět:(
Vím, proč to tak je, ale nedokážu to opravit :?

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
1. 5. 2006   #20
-
0
-

[i]Vím, proč to tak je, ale nedokážu to opravit [/i]
Proč to tedy je?

Tentokrát to nevkládat na Canvas ale na Text? Vkládá to na různá místa?

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
1. 5. 2006   #21
-
0
-

jo, vkl?d?m to do textu. Jsou to jako smajl?ci v ICQ...
hled?m pomoc? metody search jejich indexy a pak to pred?v?m t? funkci.
mysl?m, ?e to je proto, ?e poka?d?, kdy? vytvo??m ten obr?zek, tak se ta prom?n? p?ep??e na novou a ten starej obr?zek zmiz?. T??ko se to vysv?tluje

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
1. 5. 2006   #22
-
0
-

Kterou proměnnou myslíš? okno.image? - TO si myslím i já. Pokaždé se okno.image přepíše. Potřebuješ tedy takovou proměnnou, do která se bude moci přidávat, a bude se to kupit na sebe. TO je přesně seznam :-) tedy založit v hlavní části programu proměnnou typu seznam a ve funkci místo okno.image=obrazek dělat nazev_seznamu.append(obrazek).

P.S. Nemám rád funkce, co se jmenujou neco() nebo taky funkce() - :och:

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
1. 5. 2006   #23
-
0
-

tak to sorry, já se polepším :cigo:
jo, a už m to funguje

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
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, 10 hostů

Podobná vlákna

Vykreslovanie JPG — založil mORb

Z jpg do TIFF — založil Janina

Převod jpg do csv — založil Michal

TlaČ jpg obrazka ... — založil qwertz

 

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