några sidor på nätet om PHP programmering

Sök efter  
Börja här Uppgifter Testa dig själv Tips Sidokarta mm. Länkar Sök

4.3 Bilder

Man kan skapa bilder helt programmässingt i PHP. Detta förutsätter att gd extensionen är tillgänglig, antingen statiskt eller dynamiskt. Nedan är ett litet programexempel på en knappkonstruerare i PHP. Se mera i PHP-dokumentationen i image *

<?php

    
# har du inte PHP 4.1.0 eller nyare måste du byta ut
    # $_REQUEST till $HTTP_GET_VARS 
    # och $_SERVER till $HTTP_SERVER_VARS 
    # för att få koden att fungera
    # du bör även ha tillgång till gd extensionen till PHP
    
    # kolla om gd extensionen finns tillgänglig
    # egendefinierad funktion längre ner i koden    
    
if ( checkExtension"gd" ) )
    {
        
# kom det bredd i url ?
        # om inte sätt 100
        
$width = isSet( $_REQUEST"width" ] ) ? $_REQUEST"width" ] : 100
        
        
# typ av bild - default jpeg 
        # png och wbmp tillåtna
        
$type = isSet( $_REQUEST"type" ] ) ? $_REQUEST"type" ] : "jpeg"

        
# höjden - default 30
        
$height = isset( $_REQUEST"height" ] ) ? $_REQUEST"height" ] : 30

        
# texten - default "Knapp"
        
$label = isSet( $_REQUEST"label" ] ) ? $_REQUEST"label" ] : "Knapp"
        
        
# typsnitt siffra 0 - 5 - default 5
        
$font = isSet( $_REQUEST"font" ] ) ? $_REQUEST"font" ] : 5
        
        
# man skulle även kunna ta färgkoderna från URL

        # skapa bilden med bredd o. höjd
        
$image imageCreate$width$height );

        
# bakgrundfärg 
        # har äntligen börjat lära mig Hexkoderna så jag använder 
        # helst dem. Egendefinierad funktion
        
$bgcolor  htmlColor$image"#1E90FF" );
                
        
# högdager färg
        
$lightcolor htmlColor$image"#00BFFF" );
        
        
# skuggfärg
        
$darkcolor htmlColor$image"#000080" );

        
# textfärg
        
$textcolor htmlcolor$image"#FFFFFF" );
        
        
# fyll bakgrundfärgen
        # prametrar:
        # bilden, x , y, bredd, höjd, färg
        
imageFilledRectangle$image11$width 2$height 2$bgcolor );
        
        
# rita övre strecket
        
imageLine$image00$width 10$lightcolor );

        
# rita vänstra strecket
        
imageLine$image000$height$lightcolor );

        
# rita nedre skuggan
        
imageLine$image0$height 1$width 1$height 1$darkcolor );

        
# rita högra skuggan
        
imageLine$image$width 11$width 1$height 1$darkcolor );

        
# räkna ut bredden på texten
        
$labelwidth  imagefontwidth$font ) * strlen$label );

        
# räkna ut höjden på texten
        
$labelheight imagefontheight$font );

        
# kalkylera x och y för texten
        
$labely = ( $height $labelheight ) / 2;
        
$labelx = ( $width $labelwidth ) / 2;
        
        
# rita skuggan först 
        # lite neråt och till höger
        
imageString$image$font$labelx 1$labely 1$label$darkcolor );

        
# och sedan texten
        
imageString$image$font$labelx$labely$label$textcolor );
        
        
# har användaren en MAc så kan vi ändra på färgerna lite
        # för att få rätt färger
        
if ( strposstrtolower$_SERVER["HTTP_USER_AGENT"] ), "mac" ) )
        {
            @ 
imageGammaCorrect($image2.21.571 );
        }
        
        if ( 
$type == "png" )
        {
            
header("Content-type: image/x-png" );
            
imagePng$image );
        }
        elseif ( 
$type == "wbmp" )
        {
            
header("Content-type: image/vnd.wap.wbmp" );
            
imageWbmp$image );
        }
        else
        {
            
header("Content-type: image/jpeg" );
            
imageJpeg$image );
        }
    }


    
    function 
htmlColor$image$color )
    {
        
# plockar ut de enskilda färgerna med en regexp
        
$color_regexp "/^#?(\w{2})(\w{2})(\w{2})$/";

        if ( 
preg_match$color_regexp$color$rgb 
                        &&  
                        
count$rgb ) == 
        {
            
# syntax:
            # imagecolorallocate ( bild, röd, grön, blå )
            # returnerar en integer för färg
            
return imageColorAllocate$image
                                        
hexDec$rgb] ), 
                                        
hexDec$rgb] ), 
                                        
hexDec$rgb] ) );
        }
        else
        {
            return 
0# svart
        
}

    }
    
# funktion som kontrollerar om en extension finns
    # Finns den inte försöker vi ladda den dynamiskt
    # all bidbearbetning förutsätter "gd" extensions som i 
    # Windows finns i "php_gd.dll" filen 
    # se till att "extension_dir" är korrekt i 
    # php.ini filen
    
function checkExtension$extension )
    {
        
$all get_loaded_extensions();
        if ( 
in_array$extension$all ) )
        {
            return 
true# fanns
        
}
        else
        {
            if ( 
strtouppersubstrPHP_OS0) == "WIN" ) )
            {
                return 
dl("php_" $extension ".dll");
            }
            else
            {
                
# jag tror detta kan funka men jag har inte
                # tillgång till en Linux server med några
                # extensions
                
return dl"mod_" $extension ".so");
            }
        }
    }
?>
Listning 4.3.1 - samples/s95.php
[Visa i separat fönster]

Användning av koden

<img src="./samples/s95.php"><br>
<img 
 src="./samples/s95.php?width=140&label=Anders&font=2"
><br>
<img src="./samples/s95.php?label=Knäppa"><br>
<img src="./samples/s95.php?label=Knappar&type=png"><br>
<img src="./samples/s95.php?label=Knappar&font=3"><br>
Listning 4.3.2 - samples/s96.php






Resultat av listning 4.3.2

   TipsBilder