Toon posts:

[php] imagepng..?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allen,

Ik heb mijn icon scrip geschreven op de volgende manier:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?
    //functie om een random image tevoorschijn te toveren
    function mkpass($images)
    {
        $bovenwaarde = count($images);
        srand((double)microtime()*1000000);

        $randval = rand(0, $bovenwaarde);
        $pass = $images[$randval];
        return $pass;
    }
    
    function gettime()
    {
        setlocale( "LC_ALL", "de_DE" );        
        putenv( "PHP_TZ=Europe/Berlin" );        
        $now = time() + 3600 + 552;        
        $time = date("d-m-Y H:i:s", $now);    
        return $time;
    }
    
    //array maken van alle .png plaatjes in de werk directory
    $images = array();
    $rest = array();
    $dir = opendir(getcwd());
    while($image = readdir($dir)) 
    {
        if(is_file($image) &amp;&amp; eregi(".png", basename($image))) $images[] = $image;
        else $rest[] = $image;
    }
    closedir($dir);
    unset($rest);
    
    //een random image maken
    $pass = MKPASS($images);
    if(!$pass) $pass = MKPASS($images);
    else
    {
        
        //IP adres
        if (getenv(HTTP_X_FORWARDED_FOR)) $IP = getenv(HTTP_X_FORWARDED_FOR); 
        else $IP=getenv(REMOTE_ADDR); 
        
        $ref = getenv("HTTP_REFERER"); //referer
        $time = gettime(); //datum/tijd
        //totaal bijschrijven    
        $logstring = "\n<tr><td><b>$IP</b></td><td>".'<a href="'."$ref".'" target="_blank">'."$ref</a></td><td>$pass</td><td>$time ".date("T")."</td></tr>";
        
        //logstring  wegschrijven        
        $fp = fopen("log.html", "a");
        fwrite($fp, $logstring);
        fclose($fp);

        //plaatje doorgooien naar browser
        Header ("Content-type: image/png");
        Header("Cache-Control: no-cache, must-revalidate"); 
        $img = ImageCreateFromPNG($pass);   
        Imagepng($img);
        ImageDestroy($img);
    }
    
?>

Het resultaat zie je rechts, maar zoals je kunt zien, zijn de originele png'tjes net ff anders (qua kleurenpalette) als de door php ge-imagepngde...
Iemand enig idee waardoor dit komt?
De png's vind je hier:
http://www.dosdos.f2s.com/got/icon/all_png.php

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Je gebruikt vast GD1.6 (oid) en niet GD2. Pas vanaf GD2 is True Color ondersteund.

Verwijderd

Topicstarter
ff kijken...
phpinfo geeft: GD Version 1.6.2 or higher

Enig idee hoe ik die truecolor aan de praat krijg?

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Ja.

GD2 installeren.

Verwijderd

Topicstarter
Op maandag 14 januari 2002 12:09 schreef [ti] het volgende:
Ja.

GD2 installeren.
Geen optie hellaas, f2s... :(

Enige andere manier?

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Nou, omdat je toch alleen wat log dingen doet, en niet daadwerkelijk het plaatje veranderd, zou je ook kunnen overwegen om gewoon de data rauw (fopen() e.d.) in te lezen en door te pompen; is nog sneller ook.

Verwijderd

Topicstarter
met passthru dus?
PHP:
1
2
3
4
<?
$fp = fopen($pass, "r");
passthru($fp);
?>

ofzo?

[edit]
correctie: fpassthru natuurlijk.

Bedankt voor je hulp!

Ik heb nu in totaal dit bij elkaar gephpt...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?
    //functie om een random image tevoorschijn te toveren
    function mkpass($images)
    {
        $bovenwaarde = count($images);
        srand((double)microtime()*1000000);

        $randval = rand(0, $bovenwaarde);
        $pass = $images[$randval];
        return $pass;
    }
    
    function gettime()
    {
        setlocale( "LC_ALL", "de_DE" );        
        putenv( "PHP_TZ=Europe/Berlin" );        
        $now = time() + 3600 + 552;        
        $time = date("d-m-Y H:i:s", $now);    
        return $time;
    }
    
    //array maken van alle .png plaatjes in de werk directory
    $images = array();
    $rest = array();
    $dir = opendir(getcwd());
    while($image = readdir($dir)) 
    {
        if(is_file($image) &amp;amp;&amp;amp; eregi(".png", basename($image))) $images[] = $image;
        else $rest[] = $image;
    }
    closedir($dir);
    unset($rest);
    
    //een random image maken
    $pass = MKPASS($images);
    if(!$pass) $pass = MKPASS($images);
    else
    {
        
        //IP adres
        if (getenv(HTTP_X_FORWARDED_FOR)) $IP = getenv(HTTP_X_FORWARDED_FOR); 
        else $IP=getenv(REMOTE_ADDR); 
        
        $ref = getenv("HTTP_REFERER"); //referer
        $time = gettime(); //datum/tijd
        //totaal bijschrijven    
        $logstring = "\n<tr><td><b>$IP</b></td><td>".'<a href="'."$ref".'" target="_blank">'."$ref</a></td><td>$pass</td><td>$time".date("T")."</td></tr>";
        
        //logstring  wegschrijven        
        $fp = fopen("log.txt", "a");
        fwrite($fp, $logstring);
        fclose($fp);

        //plaatje doorgooien naar browser
        Header ("Content-type: image/png");
        Header("Cache-Control: no-cache, must-revalidate"); 
        $fp = fopen($pass, "r");
        if(!fpassthru($fp))
        {
            fclose($fp);
            $img = ImageCreateFromPNG($pass);   
            ImagePng($img);
            ImageDestroy($img);
        }
        fclose($fp);
    }
    
?>

Iemand op/aanmerkingen? Ik hoor het dan graag!
Pagina: 1