Oprettet søn. d. 12. august 2007 kl. 18:51:28

simseboii
simseboii (8.100 point. Point ude: 970)

GDlib: Billede på billede

Hej.
Jeg ved, hvordan man ligger tekst på et billede med GDlib, men jeg har længe prøvet at finde ud af, hvordan man ligger et billede på et billede med GDlib. Er der nogen, der kan fortælle mig det?

På forhånd tak.
- Simon

Skrevet søn. d. 12. august 2007 kl. 22:02:08| #1

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Du skal have fat i et script som kan laver WATERMARKS.

Se f.eks. denne kode fra en tidligere tråd:

<?php

//Setup
$uploaddir = '/upload/';
$maxSize = 8388608;
$allowPics = array('jpg','jpeg','jpe');
$numberOfPictures = 5;

$watermark_png = 'watermark.png';

if(is_array($_FILES['userFile']))
{
    $watermark = imagecreatefrompng($watermark_png);
 
    $watermark_width = imagesx($watermark);
    $watermark_height = imagesy($watermark);
   
    echo '<pre>';
    print_r($_FILES);
    echo '<pre>';
    for($i = 0; $i < $numberOfPictures; $i++)
    {
        if($_FILES['userFile']['size'][$i] == 0)
        {
            continue;
        }
       
        if($_FILES['userFile']['size'][$i] > $maxSize)
        {
            echo 'Dit billede nummer ' . ($i+1) . ' er for stort, prøv med mindre...';
            continue;
        }
        $uploadfile = getcwd() . $uploaddir . 'test_' . basename($_FILES['userFile']['name'][$i]);
       
        $ext = strtolower(end(explode(".",$_FILES['userFile']['name'][$i])));
        if(!in_array($ext,$allowPics))
        {
            echo 'Forkert billede format i billede ' . ($i+1) . ', prøv med et andet (jpg, jpeg eller jpe)!';
            continue;
        }
       
        $imgSrc = $_FILES['userFile']['tmp_name'][$i];
       
        $image  = imagecreatefromjpeg($imgSrc);
        $width  = imagesx($image);
        $height = imagesy($image);

        if($watermark_width > $width || $watermark_height > $height)
        {
            $dstim = imagecreatetruecolor(30, 10);
            imagecopyresampled( $dstim, $watermark, 0, 0, 0, 0, 30, 10, $watermark_width, $watermark_height );
            $dest_x = $width - 35;
            $dest_y = $height - 15;

            imagecopymerge($image, $dstim, $dest_x, $dest_y, 0, 0, 30, 10, 100);
        }
        else
        {
            $dest_x = $width - $watermark_width - 5;
            $dest_y = $height - $watermark_height - 5;
   
            imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
        }
       
        imagejpeg($image,$uploadfile,100);
        imagedestroy($image);
    }
    imagedestroy($watermark);
    header("Location: " . $_SERVER['PHP_SELF']);
    exit();
}
else
{
?>

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
<table>
    <?php
    for($i = 0; $i < $numberOfPictures; $i++)
    {
        echo '<tr><td>Send file ' . ($i+1) . ':</td><td><input name="userFile[]" type="file" /></td></tr>'."\n";
    }
    ?>
    <tr><td colspan="2"><input type="submit" value="Send File" /></td></tr>
</table>
</form>

<?
}

?>

Skrevet man. d. 13. august 2007 kl. 08:04:49| #2

simseboii
simseboii (8.100 point)
Hej.
Mange tak - det er præcis, hvad jeg mangler!

Men der er opstået et problem: Før var teksten på billedet hvid, men så lagde jeg det lille billede til venstre ind på den sorte baggrund og nu begynder teksten at variere alt efter hvilket billede, der er i venstre side.

Her er nogle eksempler:

http://www.snuzzer.dk/charinfo/img.php?realm=Al'Akir&character=Snuzzer&show=123456
http://www.snuzzer.dk/charinfo/img.php?realm=Al'Akir&character=Braknar&show=123456
http://www.snuzzer.dk/charinfo/img.php?realm=Al'Akir&character=Biz&show=123456

- Simon

Skrevet man. d. 13. august 2007 kl. 08:06:37| #3

simseboii
simseboii (8.100 point)
Hov - jeg må nok hellere smide min kode.

$overlay = imagecreatefromgif("watermark.png");

$overlay_width = imagesx($overlay);
$overlay_height = imagesy($overlay);

$img = imagecreatefromgif("gfx/background.gif");
 
imagecopymerge($img, $overlay, 5, 5, 0, 0, $overlay_width, $overlay_height, 100);

$color = imageColorAllocate($img,255,255,255);
$color = imageColorExact($img,255,255,255);
$font = imageloadfont("font/dyno.gdf");

$dest_x = 74;
$dest_y = -6;

imageString($img, $font, $dest_x, $dest_y, $char[0], $color);

Skrevet man. d. 13. august 2007 kl. 08:22:42| #4

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Hvad er det du laver her:
$color = imageColorAllocate($img,255,255,255);
$color = imageColorExact($img,255,255,255); ?

Skrevet man. d. 13. august 2007 kl. 12:22:52| #5

simseboii
simseboii (8.100 point)
Jeg går ud fra, at jeg sætter farven på skriften i det stykke kode, men jeg fandt den kode for lang tid siden.

Skrevet man. d. 13. august 2007 kl. 12:27:47| #6

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Prøv at fjern: $color = imageColorExact($img,255,255,255);

Skrevet man. d. 13. august 2007 kl. 14:43:34| #7

simseboii
simseboii (8.100 point)
Det gør ingen forskel.

Skrevet man. d. 13. august 2007 kl. 17:26:11| #8

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Kan du vise den fulde kode?

Skrevet man. d. 13. august 2007 kl. 18:08:16| #9

simseboii
simseboii (8.100 point)
Ja, selvfølgelig:

<?php
header("Content-Type: image/gif");

$adresse = htmlentities(file_get_contents("http://armory.wow-europe.com/character-sheet.xml?r=".str_replace(" ", "+", str_replace("\\", "", $_GET[realm]))."&n=".$_GET[character]),ENT_QUOTES);
$udskift = array("\t", "  ", "\r\n", "\r");
$udskiftMed = array("&nbsp;", "&nbsp;", "\n", "\n");
$kildekode = str_replace($udskift, $udskiftMed, $adresse);

$classid = explode("theClassId = ", $kildekode);
$classid = explode(";", $classid[1]);

$raceid = explode("theRaceId = ", $kildekode);
$raceid = explode(";", $raceid[1]);

$char = explode("theCharName = &quot;", $kildekode);
$char = explode("&quot;", $char[1]);

$sex = explode("images/portraits/wow-70/", $kildekode);
$sex = explode("-", $sex[1]);

$guild = explode("&lt;h3&gt;", $kildekode);
$guild = explode("&lt;/h3&gt;", $guild[2]);

$level = explode("theLevel = ", $kildekode);
$level = explode(";", $level[1]);

$class = explode("theClassName = &quot;", $kildekode);
$class = explode("&quot;", $class[1]);

$realm = explode("theRealmName = &quot;", $kildekode);
$realm = explode("&quot;", $realm[1]);

$prof1 = explode("&lt;a href=&quot;java script: ajaxLink(%22character-skills.xml?%22+ theCharUrl);&quot;&gt;", $kildekode);
$prof1 = explode("&lt;/a&gt;", $prof1[1]);

$prof1skill = explode("&lt;span&gt;", $kildekode);
$prof1skill = explode("&lt;/span&gt;", $prof1skill[9]);

$prof2 = explode("&lt;a href=&quot;java script: ajaxLink(%22character-skills.xml?%22+ theCharUrl);&quot;&gt;", $kildekode);
$prof2 = explode("&lt;/a&gt;", $prof2[2]);

$prof2skill = explode("&lt;span&gt;", $kildekode);
$prof2skill = explode("&lt;/span&gt;", $prof2skill[10]);

$talents = explode("&lt;span&gt;", $kildekode);
$talents = explode("&lt;/span&gt;", $talents[8]);

if($level[0] < 70)
{
    $piclevel = "default";
}
else
{
    $piclevel = 70;
}

$overlay = imagecreatefromgif("http://armory.wow-europe.com/images/portraits/wow-".$piclevel."/".$sex[0]."-".$raceid[0]."-".$classid[0].".gif");

$overlay_width = imagesx($overlay);
$overlay_height = imagesy($overlay);

$img = imagecreatefromgif("gfx/background.gif");
 
imagecopymerge($img, $overlay, 5, 5, 0, 0, $overlay_width, $overlay_height, 100);

$color = imageColorAllocate($img,255,255,255);
$font = imageloadfont("font/dyno.gdf");

$dest_x = 74;
$dest_y = -6;

imageString($img, $font, $dest_x, $dest_y, $char[0], $color);

$font = imageloadfont("font/proggysquare.gdf");

$dest_x = 78;
$dest_y = 26;

imageString($img, $font, $dest_x, $dest_y, "<$guild[0]>  $level[0] $class[0], ".str_replace("+", " ", str_replace("\\", "", $_GET[realm])), $color);

$dest_x = 77;
$dest_y = 42;

if($prof1[0] != "" && $prof2[0] != "")
{
    imageString($img, $font, $dest_x, $dest_y, "$prof1[0]: $prof1skill[0] $prof2[0]: $prof2skill[0]", $color);
}
elseif($prof1[0] != "" && $prof2[0] == "")
{
    imageString($img, $font, $dest_x, $dest_y, "$prof1[0]: $prof1skill[0]", $color);
}
elseif($prof1[0] == "" && $prof2[0] != "")
{
    imageString($img, $font, $dest_x, $dest_y, "$prof2[0]: $prof2skill[0]", $color);
}

$dest_x = 11;
$dest_y = 75;

$font = 1;

imageString($img, $font, $dest_x, $dest_y, $talents[0], $color);

function show($valg, $realm, $character)
{
    $adresse = htmlentities(file_get_contents("http://armory.wow-europe.com/character-sheet.xml?r=".str_replace(" ", "+", str_replace("\\", "", $_GET[realm]))."&n=".$_GET[character]),ENT_QUOTES);
    $udskift = array("\t", "  ", "\r\n", "\r");
    $udskiftMed = array("&nbsp;", "&nbsp;", "\n", "\n");
    $kildekode = str_replace($udskift, $udskiftMed, $adresse);

    $health = explode("&lt;span&gt;", $kildekode);
    $health = explode("&lt;/span&gt;", $health[11]);

    $mana = explode("&lt;span&gt;", $kildekode);
    $mana = explode("&lt;/span&gt;", $mana[12]);

    $armor = explode("this.base = &quot;", $kildekode);
    $armor = explode("&quot;", $armor[6]);

    $stamina = explode("this.effective = &quot;", $kildekode);
    $stamina = explode("&quot;", $stamina[3]);

    $intellect = explode("this.effective = &quot;", $kildekode);
    $intellect = explode("&quot;", $intellect[4]);

    $spirit = explode("this.effective = &quot;", $kildekode);
    $spirit = explode("&quot;", $spirit[5]);

    $strength = explode("this.effective = &quot;", $kildekode);
    $strength = explode("&quot;", $strength[1]);

    $agility = explode("this.effective = &quot;", $kildekode);
    $agility = explode("&quot;", $agility[2]);

    $holy = explode("this.holy = ", $kildekode);
    $holy = explode(";", $holy[1]);

    $arcane = explode("this.arcane = ", $kildekode);
    $arcane = explode(";", $arcane[2]);

    $fire = explode("this.fire = ", $kildekode);
    $fire = explode(";", $fire[2]);

    $nature = explode("this.nature = ", $kildekode);
    $nature = explode(";", $nature[2]);

    $frost = explode("this.frost = ", $kildekode);
    $frost = explode(";", $frost[2]);

    $shadow = explode("this.shadow = ", $kildekode);
    $shadow = explode(";", $shadow[2]);

    $choly = explode("this.holy = ", $kildekode);
    $choly = explode(";", $choly[3]);
    $carcane = explode("this.arcane = ", $kildekode);
    $carcane = explode(";", $carcane[3]);
    $cfire = explode("this.fire = ", $kildekode);
    $cfire = explode(";", $cfire[3]);
    $cnature = explode("this.nature = ", $kildekode);
    $cnature = explode(";", $cnature[3]);
    $cfrost = explode("this.frost = ", $kildekode);
    $cfrost = explode(";", $cfrost[3]);
    $cshadow = explode("this.shadow = ", $kildekode);
    $cshadow = explode(";", $cshadow[3]);
    $critchance = ($choly[0] + $carcane[0] + $cfire[0] + $cnature[0] + $cfrost[0] + $cshadow[0]) / 6;

    switch($valg)
    {
        case "0":
            break;
        case "1":
            return "Health: ".$health[0];
            break;
        case "2":
            return "Mana: ".$mana[0];
            break;
        case "3":
            return "Armor: ".$armor[0];
            break;
        case "4":
            return "Stamina: ".$stamina[0];
            break;
        case "5":
            return "Intellect: ".$intellect[0];
            break;
        case "6":
            return "Spirit: ".$spirit[0];
            break;
        case "7":
            return "Strength: ".$strength[0];
            break;
        case "8":
            return "Agility: ".$agility[0];
            break;
        case "9":
            return "Holy: ".$holy[0];
            break;
        case "10":
            return "Arcane: ".$arcane[0];
            break;
        case "11":
            return "Fire: ".$fire[0];
            break;
        case "12":
            return "Nature: ".$nature[0];
            break;
        case "13":
            return "Frost: ".$frost[0];
            break;
        case "14":
            return "Shadow: ".$shadow[0];
            break;
        case "15":
            return "Crit: ".$critchance[0]."%";
            break;
    }
}

$font = imageloadfont("font/proggysquare.gdf");

$dest_x = 77;
$dest_y = 58;

imageString($img, $font, $dest_x, $dest_y, show(substr($_GET[show], 0, 2)), $color);

$dest_x = 77;
$dest_y = 73;

imageString($img, $font, $dest_x, $dest_y, show(substr($_GET[show], 2, 2)), $color);

$dest_x = 180;
$dest_y = 58;

imageString($img, $font, $dest_x, $dest_y, show(substr($_GET[show], 4, 2)), $color);

$dest_x = 180;
$dest_y = 73;

imageString($img, $font, $dest_x, $dest_y, show(substr($_GET[show], 6, 2)), $color);

$dest_x = 293;
$dest_y = 58;

imageString($img, $font, $dest_x, $dest_y, show(substr($_GET[show], 8, 2)), $color);

$dest_x = 293;
$dest_y = 73;

imageString($img, $font, $dest_x, $dest_y, show(substr($_GET[show], 10, 2)), $color);

imageGIF($img);
?>

Skrevet man. d. 13. august 2007 kl. 20:15:28| #10

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Jeg tror jeg har fundet fejlen.
Det er ikke lige meget hvilken type dine GIF billeder er i.
F.eks. prøvede jeg at bruge en ikke RGB gif og da var teksten SORT (den skulle være HVID).
Så gemte jeg gif billedet korrekt i RGB og så var teksten hvid som den skulle.

Skrevet man. d. 13. august 2007 kl. 20:25:01| #11

simseboii
simseboii (8.100 point)
Hej.
Det vil sige, at de små billeder ikke er RGB?

Okay, mange tak.
Smid et svar ;-)

Skrevet man. d. 13. august 2007 kl. 20:32:17| #12

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Jeg smider kun et svar hvis det var løsningen.

Skrevet man. d. 13. august 2007 kl. 21:39:05| #13

simseboii
simseboii (8.100 point)
Hej.
Undskyld, jeg er bange for, at det ikke er løsningen.
Jeg lavede et nyt RGB dokument i Photoshop, kopierede følgende billede ind i det og gemte og smed det ind i koden, men det ændrede ingenting. Jeg gjorde det samme ved baggrunden og lige lidt hjalp det.

http://armory.wow-europe.com/images/portraits/wow-70/0-7-9.gif

Du kan se billederne, jeg har prøvet at lave RGB her:
http://www.snuzzer.dk/charinfo/gfx

Skrevet man. d. 13. august 2007 kl. 22:01:01| #14

jakobdo
jakobdo (162.965 point)
www.codebreaker.dk
Nu lavede jeg lidt mere test.
Kan du vælge mellem 32, 64 og 128 farver?
Hvis jeg valgte 128, så blev teksten sort.
Hvis jeg valgte 32 eller 64 (begge billeder) så var teksten korrekt hvid.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Fjerne alt mellem bbcode tags i string

Oprettet den 31. juli 2010 kl. 17.14
davidskp giver 30 point for svar | Giv et svar »

indsætte div et bestemt sted

Oprettet den 31. juli 2010 kl. 14.35
andreas134 giver 100 point for svar | Giv et svar »

Ny home page på website hver dag

Oprettet den 31. juli 2010 kl. 02.18
franklinpaper giver 200 point for svar | Giv et svar »

Seneste guides

100% højde med CSS i alle browsere
XML
Autocad / 3D Max / Revit til Salg.





Tips & Tricks fra PC World

Teaser billede

Sådan får du mest ud af batteriet på din bærbare

Batterierne i den bærbare lever sjældent op til forventningerne, men det er ikke altid batteriernes skyld. Se her hvordan du får mest muligt ud af dine batterier.


Anmeldelser fra PC World

Teaser billede

GTX460: Grafikkort med fin ydelse til rimelige penge

De store grafikkort løber med opmærksomheden, men det er i mellemklassen at de gode køb findes. Et af dem er det helt nye Nvidia GTX460. Se kortets resultater her.


Seneste blogindlæg

Teaser billede

Nu kan du slettes

Det sker af og til at en bruger ønsker at slette sin profil her på Eksperten. Det har vi haft svært ved, men nu kan du gøre det nemt og enkelt. Alt du skal gøre er at logge ind, gå ind på...


Nyheder fra PC World

Teaser billede

Test: Stream nye spil til gamle computere

Det er slut med at investere tusindvis af kroner i dyr hardware for at kunne spille de nyeste spil - amerikansk firma lader stor serverfarm klare arbejdet og streamer spillene til dig via nettet....


Nyheder fra Computerworld

Teaser billede

Test din viden med Computerworlds store sommerquiz

4. del: Brug agurketiden til at få opdateret din viden om it-branchen, og test for sjov om kollegerne på ferie eller derhjemme er lige så skarpe. Computerworld quizzer hver uge hele sommeren.



Kurser
Samarbejdspartnere

Udgiver · © 2010 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301