Portál AbcLinuxu, 6. května 2025 07:28

Dotaz: Tkinter, canvas a 6Mpix fotka

26.9.2011 14:30 Raada | skóre: 4
Tkinter, canvas a 6Mpix fotka
Přečteno: 426×
Odpovědět | Admin
Ahoj, mam nasledujici problem: Mam platno v Tkinter a nacitam do nej 6Mpix fotku. Pokud chci fotku zvetsit pomoci PIL.Image.resize(), tak od urcitych pomeru zvetseni(4x a vice) mi to padne nejspis kvuli nedostatku pameti (mam 2GB). Pod linuxem padne cely programek (do konzole se napise jenom "Killed"), pod woknama program vydrzi, jenom se neprovede to zvetseni obrazku (do konzole se napise mimo jine "Memory Error"). Takze jak mam zvetsovat obrazky? Jak to delaji programy jako gimp apod? Dik

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.9.2011 15:19 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Odpovědět | | Sbalit | Link | Blokovat | Admin
A proč to chceš zvětšovat ? I když to zvětšíš tak tam ty údaje nebudou.

Jinak co takhle si pustit v jiném okně top a sledovat kolik to chce RAM, případně udělat velký odkládací soubor a připojit si ho jako swap - sice to bude pomalé, ale mělo by to fungovat.

Taky může být v OS nastaven limit RAM.
27.9.2011 09:27 Raada | skóre: 4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Zvetsuju to, abych na to lip videl:-), z cele fotky me muze zajimat jenom par malych oblasti, ktere jsou ale roztristeny po cele fotce, takze udelat jenom maly vyrez nic neresi.
Spotrebu ramky sleduju, vzdycky vyleti skoro na max pred tim, nez to spadne.
To s tim souborem by mohlo byt reseni, ale bude to dostatecne multiplatformni? Da se to vsechno udelat v ramci pythoniho kodu? A pokud ano tak jak?
Limit na RAM? Kde se to da zjistit v ubuntovi? A ve Vistach?
Dik
27.9.2011 10:08 l4m4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Musíš zvětšovat, co je zobrazeno, ne celý obrázek, takže velikost výsledku je omezena rozlišením monitoru, což je příčetné číslo.
27.9.2011 11:21 Raada | skóre: 4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Ale jak to udelat? Nejaky navod nebo postup by nebyl?
27.9.2011 12:22 l4m4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Jak to udělat v Tkinter, to nevím, používám jiné toolkity.
29.9.2011 13:28 Raada | skóre: 4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
OK, kdyz jsme se nedobrali vysledku (viz predchozi diskuse), zajimalo by me, jestli je mozne (v pythonim kodu) nejak zabranit tomu, aby system zabil muj programek. Jestli napr. pomoci try/except lze sledovat neco, co naznacuje, ze se system chysta k zasahu a problematickou operaci zrusit drive, nez to udela system s celym programem nebo neco na ten zp.?
29.9.2011 13:59 l4m4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Nevím, co přesně ten program zabije (lze to snadno zjistit, když se podíváš na backtrace). Možná se zabije dobrovolně (v nějaké knihovně či komponentě). Nemožnost alokovat paměť je fatální chyba, k jejímuž korektnímu ošetření by bylo zapotřebí alokovat paměť, což je právě to, co selhalo, tudíž je ukončení běhu často jediné, co lze udělat, pouze speciálně napsané programy se to snaží řešit.

Nicméně výsledku jsme se dobrali, jen to musí napsat někdo, kdo dělá v Tkinter, což já nejsem.
Řešení 1× (Raada (tazatel))
30.9.2011 08:42 Raada | skóre: 4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Hm. No to je fuk, zkusim se dopatrat nejakyho postupu pro Tkinter. Nebo poucim potencialni uzivatele, ze nemaji delat tak velky fotky.
27.9.2011 10:14 l4m4
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Odpovědět | | Sbalit | Link | Blokovat | Admin
Profesionální programy jako GIMP representují obrázek inteligentně. Např. GIMP používá dílky 64x64, z nichž pak samozřejmě škáluje jen ty, které opravdu zobrazuje, a dokáže omezit počet dílků, které drží současně v paměti (zbytek se ,swapuje` někam na disk).
29.9.2011 18:16 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: Tkinter, canvas a 6Mpix fotka
Odpovědět | | Sbalit | Link | Blokovat | Admin
OOM-killer ?
Root v linuxe : "Root povedal, linux vykona."

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.