Megoldások IT problémákra!

PHP PNG átlátszóság szűrő

Ezt iderakom magamnak, hátaha a jövőben vagy másoknak kell. Egy függvény, ami paraméterül vár egy PNG képet és egy 1-100 közötti számot. A függvény átállítja a pixelek átlátszóságát a megadott százalék értékre. Lassan amúgy átállok majd Github Gists-re, mert az legalább megőrzi a kódformázást és van benne syntax highlight.

function filter_opacity( &$img, $opacity ) //params: image resource id, opacity in percentage (eg. 80)
{
if( !isset( $opacity ) )
{ return false; }
$opacity /= 100;

//get image width and height
$w = imagesx( $img );
$h = imagesy( $img );

//turn alpha blending off
imagealphablending( $img, false );

//find the most opaque pixel in the image (the one with the smallest alpha value)
$minalpha = 127;
for( $x = 0; $x < $w; $x++ )
for( $y = 0; $y < $h; $y++ )
{
$alpha = ( imagecolorat( $img, $x, $y ) >> 24 ) & 0xFF;
if( $alpha < $minalpha )
{ $minalpha = $alpha; }
}

//loop through image pixels and modify alpha for each
for( $x = 0; $x < $w; $x++ )
{
for( $y = 0; $y < $h; $y++ )
{
//get current alpha value (represents the TANSPARENCY!)
$colorxy = imagecolorat( $img, $x, $y );
$r = ($colorxy >> 16) & 0xFF;
$g = ($colorxy >> 8) & 0xFF;
$b = $colorxy & 0xFF;
if ($r + $g + $b == 0)
{
$opacity2 = 0;
$alpha = ( $colorxy >> 24 ) & 0xFF;
//calculate new alpha
if( $minalpha !== 127 )
{ $alpha = 127 + 127 * $opacity2 * ( $alpha - 127 ) / ( 127 - $minalpha ); }
else
{ $alpha += 127 * $opacity2; }
}
else if ($r + $g + $b == 3)
{ continue; }
else
{
$alpha = ( $colorxy >> 24 ) & 0xFF;
//calculate new alpha
if( $minalpha !== 127 )
{ $alpha = 127 + 127 * $opacity * ( $alpha - 127 ) / ( 127 - $minalpha ); }
else
{ $alpha += 127 * $opacity; }
}

//get the color index with new alpha
$alphacolorxy = imagecolorallocatealpha( $img, ( $colorxy >> 16 ) & 0xFF, ( $colorxy >> 8 ) & 0xFF, $colorxy & 0xFF, $alpha );
//set pixel with the new color + opacity
if( !imagesetpixel( $img, $x, $y, $alphacolorxy ) )
{ return false; }
}
}
return true;
}

A bejegyzés trackback címe:

https://nerd.blog.hu/api/trackback/id/tr646617711

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.

Nerd blog!

Ezen az oldalon gyűjtöm az elém került informatikai problémákra talált megoldásokat, hátha másnak is hasznos! Ha itt végeztél kikapcsolódás képpen nézd meg a másik blogomat is: NapiGeek blog. DE TÉNYEG, OKÉ?


Címkék

10.10 (2) 10.9 (2) 7 (2) 7zip (2) 8 (2) a (2) adblock (2) agyhalott (2) alert (2) alkalmazás (3) allegro (2) android (4) animált (2) app (4) apple (17) archivum (2) atom (3) átverés (2) audio (3) bash (3) beállítás (4) beállítások (6) betűméret (3) billentyűkombináció (4) billentyűparancs (3) billentyűzet (2) bin (2) biztonság (2) blog (45) böngésző (9) box (2) cascaded (2) codeblocks (5) command (2) command line (3) crack (2) crash (2) cron (3) crontab (4) css (9) date (4) dátum (3) digitális analfabéta (2) disable (2) disk (3) div (2) drive (2) drugs bunny (2) editor (2) ellenőrzés (2) email (2) error (3) exe (2) facebook (8) fájlméret (2) fájlrendszer (2) faszbúk (4) fb (2) feed (3) feladatkezelő (2) felbontás (2) felcsatol (2) fix (2) folder (2) formázás (2) fos (5) fostalicska (2) geek (2) generálás (2) git (2) google (2) google drive (2) gps (2) graph (2) gzip (2) hack (6) hálózat (2) hang (3) háttér (3) háttérkép (2) hdd (2) header (2) helyesírás (2) hiba (3) hogyan (8) how to (2) hozzászólás (2) html (8) hu (2) id (2) időzített (2) image (2) img (2) ingyen (7) injection (2) internet (5) iphone (3) iso (3) javascript (7) kaki (2) kép (5) kikapcsol (4) kikapcsolás (2) kliens (2) kód (2) konvertálás (2) lájk (2) lekérése (2) lemezkép (2) leopard (5) letöltés (3) like (2) link (4) linux (10) lion (7) lista (2) lock (2) log (2) mac (22) macbook (7) macbook pro (4) magyar (3) magyarország (2) mavericks (5) mdf (3) mds (3) mentés (2) mini (2) mobilinternet (2) monitor (2) mount (4) mountain (3) mp4 (2) működik (2) mysql (4) nélkül (3) nem (5) nerd (47) okostelefon (2) olcsó (2) oldal (6) online (2) openoffice (3) osx (36) parancssor (5) password (2) pdf (3) php (14) plugin (4) png (3) program (2) programozás (8) rar (2) régi (2) rendszer (3) repair (2) retardált (2) rss (3) safari (3) script (2) sebesség (2) sheet (2) shell script (2) sleep (2) snow (3) sok (2) stíluslap (5) style (2) stylesheet (2) szar (5) szűrő (2) tar (2) telefon (2) telepítés (4) terminal (5) test (2) teszt (3) time (4) tömörítés (4) tor (2) törlés (2) truecrypt (2) trükk (2) túl (2) ubuntu (3) újraindítás (2) unix (5) unlimited (2) url (3) ventillátor (2) version (2) video (3) virtualbox (2) warning (2) webfejlesztés (2) weboldal (6) widget (2) windows (10) windows 10 (2) windows 7 (2) windows 8 (2) windows xp (2) xcode (2) yosemite (4) youtube (7) zip (2) zoom (2) Címkefelhő

Statisztika

süti beállítások módosítása