Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] nakładanie obrazka na obrazek
Darkhijacker
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 14.10.2007

Ostrzeżenie: (0%)
-----


Mam skrypt, który nakłada jeden obrazek na drugi. Wszystko działa dobrze, tylko mam pytanie. Jak zrobić, żeby obrazek który nakładam wyświetlał się w prawym dolnym rogu obrazka źródłowego??

Kod
<?php

function gpixel($im,$x,$y){
return Array((($rgb=ImageColorAt($im,$x,$y))>>16) & 0xff,($rgb>>8) & 0xff,$rgb & 0xff);
}

function spixel($im,$x,$y,$color){
ImageSetPixel($im,$x,$y,ImageColorAllocate($im,$color[0],$color[1],$color[2]));
}

function aspixel($pix1,$pix2,$tol=2){
for($i=0,$podobne=true;$i<3;$i++)
  if(($pix1[$i]+$tol<$pix2[$i]) || ($pix1[$i]-$tol>$pix2[$i])) $podobne=false;
return $podobne;
}

function srednia($l1,$l2,$k){
return abs(round($l1-($l1-$l2)*$k));
}

function naloz($obrazek1,$obrazek2,$obrazek,$alpha=50,$nakryj=false,$tolerance=2){
$szer=imagesx($obrazek1);  $wys=imagesy($obrazek1);
$szer2=imagesx($obrazek2); $wys2=imagesy($obrazek2);
if($nakryj) $trans=gpixel($obrazek2,1,1);

for($i=0,$a=$alpha/100;$i<$szer;$i++){
  for($j=0;$j<$wys;$j++){
   $pixel1=gpixel($obrazek1,$i,$j);
   if($i<$szer2 && $j<$wys2) $pixel2=gpixel($obrazek2,$i,$j); else $pixel2=$pixel1;

   $pixel3=Array();
   if(($nakryj && aspixel($pixel2,$trans,$tolerance)) || aspixel($pixel1,$pixel2,0))
    $pixel3=$pixel1; else
    for($k=0;$k<3;$k++) $pixel3[$k]=srednia($pixel1[$k],$pixel2[$k],$a);
   spixel($obrazek,$i,$j,$pixel3);
  }
}
}

?>
<?php

$alpha=100;
// 0   = drugi obrazek bardziej przeźroczysty
// 50  = obrazki równo przeźroczyste
// 100 = pierwszy obrazek bardziej przeźroczysty

$nakryj=false;
// true  = drugi obrazek ma mieć przeźroczyste tło
// false = oba obrazki są tak samo ważne

$obrazek1=ImageCreateFromJpeg('obrazek1.jpg'); // obrazek źródłowy
$obrazek2=ImageCreateFromJpeg('obrazek2.jpg'); // obrazek do nałożenia
$obrazek=ImageCreateTrueColor(imagesx($obrazek1),imagesy($obrazek1)); // obrazek roboczy

naloz($obrazek1,$obrazek2,$obrazek,$alpha,$nakryj,50);

Header('Content-type: image/jpeg'); // ustawienie Content-type (nagłówek dla przeglądarki)
ImageJpeg($obrazek); // przesłanie do przeglądarki obrazka

ImageDestroy($obrazek1); // zniszcz je !
ImageDestroy($obrazek2);
ImageDestroy($obrazek);

?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 14:37