Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.
Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.
Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Letos je pro vás otevře 26. listopadu v 16 hodin v pražském Karlíně. Vítáni jsou všichni, kdo se chtějí dozvědět více o práci vývojářů, prostředí ve kterém pracují a o místní firemní kultuře. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem inženýři v Praze pracují, jak spolupracují se zákazníky, partnery i studenty, proč mají rádi open source a co
… více »Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za říjen (YouTube).
Jeff Quast otestoval současné emulátory terminálu. Zaměřil se na podporu Unicode a výkon. Vítězným emulátorem terminálu je Ghostty.
Amazon bude poskytovat cloudové služby OpenAI. Cloudová divize Amazon Web Services (AWS) uzavřela s OpenAI víceletou smlouvu za 38 miliard USD (803,1 miliardy Kč), která poskytne majiteli chatovacího robota s umělou inteligencí (AI) ChatGPT přístup ke stovkám tisíc grafických procesů Nvidia. Ty bude moci využívat k trénování a provozování svých modelů AI. Firmy to oznámily v dnešní tiskové zprávě. Společnost OpenAI také nedávno
… více »Konference Prague PostgreSQL Developer Day 2026 (P2D2) se koná 27. a 28. ledna 2026. Konference je zaměřena na témata zajímavá pro uživatele a vývojáře. Příjem přednášek a workshopů je otevřen do 14. listopadu. Vítáme témata související s PostgreSQL či s databázemi obecně, a mohou být v češtině či angličtině.
Byl vydán Devuan 6 Excalibur. Přehled novinek v poznámkách k vydání. Kódové jméno Excalibur bylo vybráno podle planetky 9499 Excalibur. Devuan (Wikipedie) je fork Debianu bez systemd. Devuan 6 Excalibur vychází z Debianu 13 Trixie. Devuan 7 ponese kódové jméno Freia.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu poprvé překročil 3 %, aktuálně 3,05 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 27,18 %. Procesor AMD používá 67,10 % hráčů na Linuxu.
Joel Severin v diskusním listu LKML představil svůj projekt linuxového jádra ve WebAssembly (Wasm). Linux tak "nativně" běží ve webovém prohlížeči. Potřebné skripty pro převod jsou k dispozici na GitHubu.
Máme jako na krku vánoce a novoroční pfka a určitě taky budete jako já posílat mailem hróóóóómady přáníček!! Někdo z vás třeba bude chtít posílat 'přáníčka' národnímu centru kybernetický bezpečnosti nebo NUKIBU nebo nějakej jinejm takovej těm a potřebuje nějaký jakože vysvětlení pro spoustu externích obrázků v mailíku a uplně nejlíp takový obrázky co každýho zaujmou. Proto mam pro vás uplně supr návod jak jako udělat blejskavej text pomocí pythonu a knihovny pillow ;D

![]()
Na netu už je spousta hotovejch online generátorů blejskavýho textu, mužete zkusit googlit 'glittering text generator' ale většinou neuměj naše znaky a taky je takový pitomí se s nima dělit o svuj textík protože nikdy nevíte co s nim jako mužou dělat a jestli ho třeba nevykecaj ještě dřív než svoje přáníčko pošlete a nezkazej vám překvapení :D
Muj skriptík je mnohem lepší a mužete si ho snadno upravit přebarvit a tak ;D
zdroják je dole
# -*- coding: utf-8 -*-
#tenhleten řádek uplně nahoře umožňuje ve zdrojáku používat znaky textu kódování utf-8
#takže i český a slovenský to je taky důvod proč je muj skriptík 10000000x lepší než
# většina online generátorů glittering textu ;D
#použijeme grafickou knihovnu pillow
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import math
from random import randint
#text co chceme vykreslit
#to účko před stringem řiká že to je unicode string
text=u"Chceš taky?? tak čti ne asi!! ;D"
#maximální povolená délka obrázku
#320 je šířka toho okýnka co je tady u blogísků vpravo nahoře
img_max_width=600
font_filename="SansitaOne.ttf" #cesta k souboru s fontíkem
font_size=10 #minimální velikost fontíku
font = ImageFont.truetype(font_filename, font_size)
text_width=font.getsize(text)[0]#ixový rozměr textu == jeho délka v pixelech
num_stars=30#počet hvězdiček vytvořených každým krokem animace
output_filename=text+'.gif'
#hvězdička!!!!!
#chci aby textík jakoby jiskřil takže na něm budu
#vykreslovat spoustu malilinkaťoučkejch hvězdiček :D :D
#hvězdičku si mužete přectavit jako takový malinkatý kolečko ze kterýho
#po celým jeho obvodu koukaj spičatý trojuhelníčky nevim jak ji jako líp popsat :D :D
class Star:
#statické proměné co patří celý třídě
#obrázek s našim textem na transparentním pozadí
#má význam v metodě findPos()
maskImg=None
#konstruktor
#to self je asi něco jako ukazatel objektu na sebe samýho
#asi něco třeba jako 'this' v jinejch jazycích
#když ho v metodě chcete využít musí bejt i argumentem funkce
#když metodu voláte z instance objektu tak se tam do argumentů nepíše
#supr kravinka že tohleto 'self'
def __init__(self,color):
#x y poloha v obrázku
#získá se z metody findPos()
self.x=0
self.y=0
self.findPos()
#barva hvězdičky
self.color=color
#délka paprsků hvězdičky
self.rOut=3
#vnitřní průměr tělíčka hvězdičky
self.rIn=1
#počet paprsků hvězdičky
#náhodný celý čísílko z intervalu od 5 do 9
self.numPoints=randint(5,9)
def draw(self,dest):
#vykreslí do vstupního obrázku hvězdičku a celý obrázek vrací returnem
points=[]
#o kolik se zvedne úhel při každým vykreslení jednoho vrcholu hvězdičky
#na střídačku vykrelujeme vrcholy paprsku a jakoby jejich patičku
#protože je kreslíme v každým kroku po dvou tak to neni 360.0/numPoints ale 180.0
angleStep=(180.0/self.numPoints)
ang=0.0
#výpočet vrcholů polygonu hvězdičky
for i in range(self.numPoints):
#vnější vrcholek hrotu paprsku hvězdičky
x=int(math.cos(ang*math.pi/180.0)*self.rOut)+self.rOut
y=int(math.sin(ang*math.pi/180.0)*self.rOut)+self.rOut
#uložíme si souřadnici do políčka
points.append((x,y))
ang+=angleStep
#vnitřní
x=int(math.cos(ang*math.pi/180.0)*self.rIn)+self.rOut
y=int(math.sin(ang*math.pi/180.0)*self.rIn)+self.rOut
points.append((x,y))
ang+=angleStep
#obrázek o dýlce hrany průměru hvězdičky
star=Image.new('RGBA', (self.rOut*2,self.rOut*2), (255,0,0,0))
#kreslidlo jednoduchý grafiky do obrázku
#použijeme to na vykreslení našeho polygonku hvězdičky
draw=ImageDraw.Draw(star)
#vykreslíme polygon do obrázku
draw.polygon(points,fill=self.color,outline=self.color)
#obrázek vložíme do vstupního obrázku aby jako ležel svým středem na souřadnici (x,y)
dest.paste(star,(int(self.x-star.size[0]/2),int(self.y-star.size[1]/2)),mask=star)
return dest
def findPos(self):
#najde souřadnici která leží na písmenkách textu
#si jako myslim že z týhletý funkce někdo muže dostat autistickej záchvat
#protože teoreticky nikdy nemusí jeji běh skončit ale je to dost nepravděpodobný ;D
#jistější postup by bylo si nazačátku určit množinu možnejch souřadnic a
#z ní náhodně vybírat body to ale nestojí za námahu ;D
x=0
y=0
while True:
#nechceme ji hnedka u okraje textíku protože to je takový divný
x=randint(5,Star.maskImg.size[0]-5)
y=randint(5,Star.maskImg.size[1]-5)
#pokud najdeme bílý pixel tak hurááááá máme souřadnici :D
if Star.maskImg.getpixel((x,y))==(255,255,255,255):
self.x=x
self.y=y
break
#funkce co vytvoří obdelníček s barevným gradientem
def color_gradient(wh,min_color,max_color):
#wh = šířka a výška obrázku
#min_color = barva dole
#max_color = barva nahoře
#vytvoříme si nový obrázek
im_grad = Image.new("RGBA",wh,min_color)
#metodou load získáme pole pixelů toho obrázku
pixelmap=im_grad.load()
w,h=wh
#smícháme barvičky v poměru odpovídajícím vertikální vzálenosti řádku pixelů
for y in range(h):
for x in range(w):
ratio=float(y)/h
inv=1.0-ratio
r=int(min_color[0]*ratio+max_color[0]*inv)
g=int(min_color[1]*ratio+max_color[1]*inv)
b=int(min_color[2]*ratio+max_color[2]*inv)
a=int(min_color[3]*ratio+max_color[3]*inv)
pixelmap[x,y]=(r,g,b,a)
return im_grad
#to bysme jako měli
#teď najdeme co největší možnou velikost textu abysme co nejvíc využili maximální
#povolenou ixovou velikost
while True:
font_size += 1
font=ImageFont.truetype(font_filename, font_size)
text_width=font.getsize(text)[0]
#pokud překročíme maximální povolenou ixovou velikost
#tak maximální možná dýlka byla jako ta předchozí
#takže o jedničku zmenšíme ;D
if(text_width>img_max_width):
font=ImageFont.truetype(font_filename, font_size-1)
break
img_wh=font.getsize(text)
print("Vytvářím obrázek o šířce {0} a výšce {1} pixelů!".format(img_wh[0],img_wh[1]))
img = Image.new("RGBA", img_wh,(255,255,255,0))
draw = ImageDraw.Draw(img)
#na transparentní obrázek vykreslíme bíle náš text
draw.text((0, 0),text,(255,255,255,255),font=font)
#jednotlivé obrázky gif animace
frames=[]
#dvě sady hvězdiček vykreslovaných na textík
stars1=[]
stars2=[]
#nastavíme statickou proměnou třídy Star na obrázek s textem
#se to hodí v metodě Star.findPos()
Star.maskImg=img
for i in range(15):
#vytvoříme si nový obrázek s gradientem
grad = color_gradient(img_wh,(10,0,255,255),(240,200,255,255))
#im_mix bude výstupní obrázek jakože všechmo smíchaný dohromady
im_mix=Image.new("RGBA", img_wh,(255,255,255,0))
#nejstaší hvězdičky přepišeme novejma z minulý iterace
#zvětšíme je a vykreslíme do obrázku s gradientem
stars1=stars2
for star in stars1:
star.rIn+=1
star.rOut+=2
grad=star.draw(grad)
#vytvoříne nový hvězdičky a taky je vykreslíme do obrázku gradientu
stars2=[]
for j in range(num_stars):
s=Star((150,150,255,255))
grad=s.draw(grad)
stars2.append(s)
#nakonec do obrázku im_mix vložíme na souřadnici (0,0) obrázek grad
#ale s maskou ve tvaru našeho textíku takže se tam vloží jenom průnik
#obrázku grad s tím naším textíkem supr ;D
im_mix.paste(grad,(0,0),mask=img)
#a strčíme do pole jednotlivých obrázků animace
frames.append(im_mix)
#nakonec to celý uložíme
frames[0].save(
output_filename, format='GIF',
append_images=frames[1:],
save_all=True,
duration=20,
loop=0,
transparency=0)
Tiskni
Sdílej:
Super :-)
A pod jakou licencí ten kód je? Doplň ji tam prosím. Ideálně GNU GPLv3.
Taky by se hodilo ten text načítat ze standardního vstupu a ne ho tam mít zadrátovaný v kódu. A když to uživatel spustí v terminálu, tak to můžeš poznat a zobrazit mu tam nějakou hlášku jako „sem zadejte text“, aby nebyl zmatený a neměl pocit, že se to zaseklo.
licenci mě vlastně vubec nenapadlo řešit :D :D
jinak tam se toho jako dá vylepšit mnóóóóhem víc :D :D text a parametry se standartního vstupu to je jasný. ještě by to šlo upravit že by všechny hvězdičky rovnou kreslily do obrázku 'grad' najednou a obešlo by se to bez toho paste a vytváření novýho obrázku každým voláním star.draw a tak dál. to ještě musim upravit ;D

Vytvářím obrázek o šířce 599 a výšce 48 pixelů!
Traceback (most recent call last):
File "blik.py", line 198, in module
grad=s.draw(grad)
File "blik.py", line 99, in draw
dest.paste(star,(self.x-star.size[0]/2,self.y-star.size[1]/2),mask=star)
File "/usr/lib/python3.8/site-packages/PIL/Image.py", line 1524, in paste
self.im.paste(im, box, mask.im)
TypeError: integer argument expected, got float
moje chyba!!!! teď by to snad mělo u tebe běžet. si myslim že jsem to včera jako pouštěla na stroji kde je ještě nastavenej jako výchozí python 2.7 ane trojka takže se to dělení chovalo jinak. když jsem to pustila tady pod trojkou tak to hodilo stejnou chybku :'(
teď by to už mělo běžet. joa budeš si tam muset nastavit nějakej font na řádku 20 ;D
jááááá!!!!! si myslim že když to odinstaluju tak rozbiju počítač tak tam je pořád jako default :D :D :D :D
a potopu světa ten tvuj psací stroj přežil nebo sis pak sekeromlatem vyrobil z šutrů novej?? ;D
uhlíková stopa je naprosto minmální protože se nebudou posílat papírový psaníčka a nebude s nima chodit třeba nějakej starej pošťák co si připaluje cigáro od cigára a zdálky to vypadá jakože taková malá parní lokomotiva ;D
jaktože jako minimální?? náš pošťák má po městě takový jakože svoje trasy po kterejch jako musí doručovat dopisy a balíčky a tak. normálně do toho nevidíš jak to jako maj mezi sebou pošťáci rozdělený. jenže jak náš pošťák hulí jedno cigáro za druhým tak z těch nedopalků nechává po tý svý trase takovou jakože stopu. ato je supr když jako víš že ti nese dopis a vidíš ho jak míjí barák ani se nerozmejšlí zastavit a hulí a jde furt dál. mužeš rychle vyběhnout z baráku a pronásledovat ho potý jeho uhlíkový stopě a pak mu vynadat že se ako ani nenamáhal zazvonit. a von se usměje zapálí si o cigaretu další cigaretu a řekně něco jako že už je nato zvyklej a jako přesně už věděl že za ním poběžíte a dá ti dopis.
a teď mi jako řekni co jinýho by mohli bejt ty nedopalky než jako uhlíková stopa??
když neumíš vysvětlit žeto neni uhlíková stopa tak to prostě bude uhlíková stopa ne asi :D :D :D :D
se válí v bahně ne asi hombré ;D
zaprvý nejsem žádná amigo a zadruhý jsem si fakt jako myslela že to pouštim v pythonu v trojce :'( se podivej třeba na závorky u printu jako :'( : '(
ste asi měli hodně zajímavou sexuální výchovu jestli ste tam jako probírali tohle hele ;D
... ale prečo ten "kretén"?...náááhoou, tu je určite jeden z najvtipnejších (okrem iných svojich altereg (-ov))
si jako myslim že ty seš já a teď jenom zkoušíš mlžit ;D
sem slyšela že si umřel!!! prej něco s hlavou nebo takovýho něco
tykráááávo já dostala tučňáčka :D :D :D :D
díkec!!!!!!
Zkusil jsem si to spustit a dostal jsem tohle:
Traceback (most recent call last):
File "blyskavy_text.py", line 9, in <module>
from PIL import Image
ModuleNotFoundError: No module named 'PIL'
Line 9 proto, protože jsem si na první řádek doplnil #!/usr/bin/env python3 .
Takže mi chybí modul 'PIL', ale co s tím?
A prosím tě, když budu třeba psát e-mail v Thunderbirdu, tak jak to do něj dostanu? Nebo jak se to dá dostat sem?
pip3 install Pillow.
Napřed jsem musel nainstalovat pip3, což jsem udělal. A:
$ sudo pip3 install pillow
Requirement already satisfied: pillow in /usr/lib/python3/dist-packages (7.0.0)
$ python blyskavy_text.py
Traceback (most recent call last):
File "blyskavy_text.py", line 9, in <module>
from PIL import Image
ModuleNotFoundError: No module named 'PIL'
Začal jsem online kurz Pythonu. Tam tě vedou k instalaci Pythonu 3, ale když programuješ, tak dáváš jen python, ne python3. Tak nevím, nejsem programátor. Každopádně:
$ python3 blyskavy_text.py
Traceback (most recent call last):
File "blyskavy_text.py", line 9, in <module>
from PIL import Image
ModuleNotFoundError: No module named 'PIL'
Ještě doplním, že to spouštím z virtuálního prostředí (source venv/bin/activate) a pak teprve python(3) blyskavy_text.py. Ale to by ničemu vadit nemělo. IMHO.
Už dobrý, dík.
Ještě se zeptám. Když to vložím do mailu v Thunderbirdu, tak jsou ty hvězdičky statické. Proč?
A jen čistě teoreticky. Sem bych to vložil jak, třeba jako název blogu? Nechci to dělat, ale abych to uměl.
Když to vložím do mailu v Thunderbirdu, tak jsou ty hvězdičky statické. Proč?Jestli se to nezměnilo, tak je to statické jen v náhledu při psaní zprávy. V konceptech a nebo odeslané poště se to prý zobrazuje animované.
Sem bych to vložil jak, třeba jako název blogu? Nechci to dělat, ale abych to uměl.Nijak. Je to obrázek, ne text. Musel bys redakční systém donutit vložit někam do stránky HTML tag
img.
Tak se to asi změnilo.
Díky za vše.
V konceptech a nebo odeslané poště se to prý zobrazuje animované
takle se mi to chová taky jakože ty gify v thunderbirdu :O :O při psaní se nehejbou hejbou až když je mail doručenej co sem testovala :O :O
Nepomohlo mi ani povolit vzdálený obsah. Napadá tě něco?
nevim. jakou máš verzi?? :O :O mě to jede v 78.6.0
Distribuční - 68.10.0
bojim se že tim to asi jako nebude ale možná zkus novější verzi jinak fakt jako nevim :O :O
Bug report:
Stáhl a nainstaloval jsem si ten font, který je použitý v kódu. Vše funguje, ale nezvlářá to "ř". Např. "č" ano. V čem je problém?
Takže místo
"á", "č", "ď", "é", "ě", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý" a "ž"
to dělá jen
"á", "č", "é", "í", "ó", "š", "ú", "ý" a "ž".
Bude to asi ale tím fontem.
jj ty znaky tam asi jako fakt chyběj v tom fontu promiň :O :O
potřeba je nějakej unicode *.ttf font s těma českejma znakama třeba tendleten by měl fungovat hele
btw různý ty stránky na stahování fontů často umožňujou vložit nějakej svuj vlastní náhledovej/preview text takže je fakt asi jako dobrý tam napsat něco jako 'příliš žluťoučkej kůň pěl ďábelský ódin' a koukat jestli to ty fonty jakoby zobrazej správně i když sou voznačený jako unicode ;D
příliš žluťoučkej kůň pěl ďábelský ódinPůvodní příliš žluťoučký kůň trpěl ďábelské ódy obsahuje těch znaků víc :)
To je příšernej font. :D Mě se právě moc líbil ten v tom kódu. Ten se právě hodil třeba k přání. Škoda, že nemá všechny české znaky. Budu se muset po něčem podobném podívat.
Tak na 1001 Free Fonts jsem nenašel nic, co by se mi líbilo. A hledal jsem docela dlouho. Na Českých Fontech jsem našel alespoň tohle.
sem ho zkusila poeditovat když je teda jakoby free a ty znaky některý chybící tam jako přidat :O :O
editovanej font i ukázka v příloze komentu ;D
Tak to je super.
Díky moc!
Ještě ti tam chybí "Ě". Zkusil jsem se do toho podívat, ale mě se to zobrazuje jako rozsypaný čaj. Můžeš to prosím tě ještě opravit?
přidaný 'Ě' :D
si myslim žes to chtěl editovat jako texťák ;D na editování/upravovování fontů se používá fontforge třeba hele ;D
Ano, jako texťák.
Díky za úpravu, ochotu a trpělivost. :) Ještě mě něco naučíš. :)