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

simseboii
simseboii (10.870 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 (180.837 point)
www.simitu.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 (10.870 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/ (...)
http://www.snuzzer.dk/ (...)
http://www.snuzzer.dk/ (...)

- Simon

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

simseboii
simseboii (10.870 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 (180.837 point)
www.simitu.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 (10.870 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 (180.837 point)
www.simitu.dk
Prøv at fjern: $color = imageColorExact($img,255,255,255);

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

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

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

jakobdo
jakobdo (180.837 point)
www.simitu.dk
Kan du vise den fulde kode?

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

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

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

$adresse = htmlentities(file_get_contents("http://armory.wow-europe.com/ (...)(" ", "+", 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/ (...));

$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/ (...)(" ", "+", 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 (180.837 point)
www.simitu.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 (10.870 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 (180.837 point)
www.simitu.dk
Jeg smider kun et svar hvis det var løsningen.

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

simseboii
simseboii (10.870 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/ (...)

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

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

jakobdo
jakobdo (180.837 point)
www.simitu.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

Problemer med sti til billeder ??

Oprettet den 9. februar 2012 kl. 00.51
michaelfranz giver 60 point for svar | Giv et svar »

Implode/PHP og Mysql

Oprettet den 8. februar 2012 kl. 23.28
condor9 giver 200 point for svar | Giv et svar »

fjern nuller

Oprettet den 8. februar 2012 kl. 20.30
kodak giver 150 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Genial Android-app hjælper dig til bedre Wi-Fi

Hvis du bor i et område, der er oversået med trådløse netværk, kan det være svært at finde den mindst trafikkerede kanal til din trådløse router. Vi guider dig til en smartphone-app til Android,...


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Her er 30 suveræne tips til din pc

Det er nemt at få din computer tilbage i topform. Vi er klar med en PDF, hvor vi har samlet 30 af de bedste tips fra pcworld.dk. Her får du hjælp og grundig vejledning til at forbedre din pc markant.


Nyheder fra Computerworld

Teaser billede

Halv NemID-løsning i bankerne vækker bekymring

Banker, der giver kunderne mulighed for logge på netbanken uden brug af NemID, spiller højt spil med sikkerheden.


Kurser
Samarbejdspartnere

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