Avatar billede cybermaster Nybegynder
07. januar 2008 - 16:44 Der er 1 kommentar og
1 løsning

ændre baggrundsfarve på png

Hvis det er PNG der er tale om, kunne jeg godt tænke mig at man kan ændre baggrunden til en farve.

Håber i kan hjælpe.

mvh

Henrik

--------------------------------------------------------

<?php
//http://www.eksperten.dk/spm/812550

$imgName = $_GET['src'];

if(preg_match('/\.(:?jpeg|jpe|jpg)$/i', $imgName))
    $imgImport = imagecreatefromjpeg($imgName);
elseif(preg_match('/\.(:?png)$/i', $imgName))
    $imgImport = imagecreatefrompng($imgName);
elseif(preg_match('/\.(:?gif)$/i', $imgName))
    $imgImport = imagecreatefromgif($imgName);   
else {
    header ("Content-type: image/png");
    $im = @imagecreatetruecolor(120, 20) or die("Cannot Initialize new GD image stream");
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5, "ERROR", $text_color);
    imagepng($im);
    imagedestroy($im);
    exit();
}


$imgName_w = imagesx($imgImport);
$imgName_h = imagesy($imgImport);

$gradientHeight = 100;

// Create new blank image with sizes.
$background = imagecreatetruecolor($imgName_w, $gradientHeight);

$gradientColor = "0 0 0"; //White
$gradparts = explode(" ",$gradientColor); // get the parts of the  colour (RRR,GGG,BBB)
$dividerHeight = 1;

$gradient_y_startpoint = $dividerHeight;
$gdGradientColor=ImageColorAllocate($background,$gradparts[0],$gradparts[1],$gradparts[2]);

$newImage = imagecreatetruecolor($imgName_w, $imgName_h);
for ($x = 0; $x < $imgName_w; $x++){
    for ($y = 0; $y < $imgName_h; $y++){
        imagecopy($newImage, $imgImport, $x, $imgName_h - $y - 1, $x, $y, 1, 1);
    }
}
// Add it to the blank background image
imagecopymerge ($background, $newImage, 0, 0, 0, 0, $imgName_w, $imgName_h, 100);

//create from a the image so we can use fade out.
$gradient_line = imagecreatetruecolor($imgName_w, 1);

// Next we draw a GD line into our gradient_line
imageline ($gradient_line, 0, 0, $imgName_w, 0, $gdGradientColor);

$i = 0;
$transparency = 30; //from 0 - 100

while ($i < $gradientHeight){ //create line by line changing as we go
    imagecopymerge ($background, $gradient_line, 0,$gradient_y_startpoint, 0, 0, $imgName_w, 1, $transparency);
    ++$i;
    ++$gradient_y_startpoint;
             
    if ($transparency == 100){
        $transparency = 100;
    }else{
        // this will determing the height of the
        //reflection. The higher the number, the smaller the reflection.
        //1 being the lowest(highest reflection)
        $transparency = $transparency + 1;
    }
}

//New blank image, wetfloor effect image + original image.
$output = imagecreatetruecolor($imgName_w, $imgName_h + $gradientHeight);

//Copy original image
imagecopy($output, $imgImport, 0, 0, 0, 0, $imgName_w, $imgName_h);

// Set the thickness of the line we're about to draw
imagesetthickness($background, 3);

// Draw the line - me do not likey the liney
imageline($background, 0, 0, $imgName_w, 0, $gdGradientColor);

//Copy wetfloor image
imagecopy($output, $background, 0, $imgName_h, 0, 0, $imgName_w, $gradientHeight);

header("Content-type: image/jpeg");

imagejpeg($output, NULL, 100); //100 being the quality of image 100 Max(Best)
imagedestroy($background);
imagedestroy($gradient_line);
imagedestroy($newImage);
imagedestroy($output);

?>
Avatar billede kjeldsted Novice
23. januar 2008 - 20:05 #1
Uden at være helt sikker, vil jeg tror at "$gradientColor = "0 0 0"; //White" er den kode du skal have fat i. Koden er angivet i RRR/GGG/BBB, hvor fx '0 0 0' er hvid, '255 255 255' er sort '0 255 0' er grøn osv.
Avatar billede cybermaster Nybegynder
08. februar 2008 - 22:33 #2
Nej det er ikke den., men lukker da der ikke er andre bud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester