Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »
function transform_image( Imagick $image, $width ){
$xSize = $image->getImageWidth();
$ySize = $image->getImageHeight();
$imgWidth = $width*0.8;
$ratio = (float)$xSize / (float) $imgWidth;
$imgHeight = $ySize / $ratio;
$image->scaleImage( $imgWidth, $imgHeight );
$image->setImageFormat( "png" );
$draw = new ImagickDraw();
//obrázek "maska"
$maska = new Imagick();
// průsvitná bílá, nyní jen pro barvu pozadí nového maskovacího obrázku
$maska->newImage( $imgWidth, $imgHeight, new ImagickPixel("rgba( 100%, 100%, 100%, 0 )"), 'png' );
//trocha počítání ....
//počet kroků a "tloušťka" rozpliznutí
$step=2; $steps = 20;
//rozplizávací čáru trochu tlustší
$draw->setStrokeWidth( $step +2 );
//střed obrázku
$icx = $imgWidth/2;
$icy = $imgHeight/2;
//parametry centrální elipsy, která označí oblast 100% viditelnosti a nechá prostor pro rozpliznutí
$iw = $imgWidth-(2*$steps*$step);
$ih = $imgHeight-(2*$steps*$step);
//poloměry centrální elipsy
$iw2 = $iw/2;
$ih2 = $ih/2;
// setFillOpacity na elipsu nefunguje
$draw->setFillColor( new ImagickPixel( "rgba( 0%, 10%, 10%, 0 )" ) );
//elipsy tvořím od kraje "dovnitř"
for($i=$steps; $i>0 ;$i-- ){
$o = 1-(float)($i/$steps) ;
$draw->setStrokeColor( new ImagickPixel("rgba( 0%, 0%, 0%, $o )") );
$draw->ellipse( $icx, $icy, $iw2+$i*$step, $ih2+$i*$step, 0, 360 );
}
//a poslední "plnou" elipsu uvnitř
$strokecolor->setColor( "rgba( 0%, 0%, 0%, 1 )" );
$draw->setStrokeColor( $strokecolor );
//$draw->setFillOpacity( 1 ); setFillOpacity pro elipsu nefunguje (?), musí se nastavit v setFillColor
$draw->setFillColor( new ImagickPixel( 'black' ) );
$draw->ellipse( $icx, $icy, $iw2, $ih2, 0, 360 );
//vykreslíme masku - vznikne elipsa s rozplizlými okraji
$maska->drawImage( $draw );
// a na původní obrázek naneseme masku průhlednosti --- neptejte se mně jak to funguje, byl to google - pokus - omyl pořád dokolečka, až se povedlo
$image->compositeImage( $maska,Imagick::COMPOSITE_COPYOPACITY, 0, 0 );
// a šup s nim ven
header('Content-Type: image/'.$image->getImageFormat());
$a = $image->getImageBlob(); //přímý výstup nefungoval, nevím proč .. obrázek měl vždy 0 B
//trigger_error( 'Dělka obrázku: '.strlen( $a ) );
echo $a;
die();
}
Tiskni
Sdílej:
Takovéto věci CSS nikdy neuděláCo, inset box-shadow nebo border-radius?
<span class="blur-img"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Ear-Spot_Squirrel.jpg/1200px-Ear-Spot_Squirrel.jpg"> </span>
.blur-img { box-sizing: border-box; display: block; width: 50%; margin: 10% auto; border-radius: 50%; box-shadow: inset 0px 0px 20px 20px #fff, inset 0px 0px 20px 20px #fff; overflow: hidden; position: relative; } .blur-img img { box-sizing: border-box; width: 100%; display: block; border-radius: 50%; border: 2px solid #fff; position: relative; z-index: -1; }Výsledek: https://jsfiddle.net/09maztw7/ Na komplikovanější věci by se asi dalo použít SVG. Případně CSS filtry. Stejně ale musí na serveru pořešit zmenšení obrázku na správnou velikost. Přikreslení rámečku už je drobnost.
Jak vyříznout z obrázku elipsoid a rozpliznout tomu okraje - pokusCo tak pouzit Cairo? Priklady ako vlastne kniznica logika jednoducho funguje. A verzia pre PHP.
$draw->setFillColor( new ImagickPixel( "rgba( 0%, 0%, 0%, 1 )" ) );
$draw->ellipse( $icx, $icy, $iw2, $ih2, 0, 360 );
$maska->drawImage( $draw );
$maska->blurImage( $step*$steps, $steps );
dostávám to rozostření krásně hladké.
Masku ještě uložím do souboru a pak jen načtu a přeškáluji na potřebný rozměr a aplikuji. Celé generování trvá 0.24s, což už je schůdné.
Ten blur totiž docela trvá, a pokud jsem u prvního parametru odhadl "co a jak" ten druhý jsem prostě jen náhodně nastavil, nevím, jaký má přesně účel. Asi "sílu" rozmazání, nevím.
Díky za popostrčení.
tak vono ten imagick umi to stejny co browser a asi i vice, spis je otazka jestli to fakt resit. Chce to na web tak, bych na to pouzil fakt to css
https://css-tricks.com/clipping-masking-css/
https://codepen.io/chriscoyier/pen/41d6e36ac584ee0401064d1cdb88fc67
^ jen si pohrej s rx="45%" u masky a mas dost podobnej efekt tomu cemu se snazis docilit