downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

imagecreatefromxbm> <imagecreatefromstring
Last updated: Fri, 13 Nov 2009

view this page in

imagecreatefromwbmp

(PHP 4 >= 4.0.1, PHP 5)

imagecreatefromwbmpBir WBMP dosyasından veya URL'sinden yeni bir resim oluşturur

Açıklama

resource imagecreatefromwbmp ( string $dosyaismi )

imagecreatefromwbmp() işlevi dosya ismi verilen resmi betimleyen bir resim tanıtıcısı döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtebilirsiniz. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakınız. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi edinmek için ise Desteklenen Protokollerin ve Sarmalayıcıların Listesi bölümüne bakınız.

Değiştirgeler

dosyaismi

WBMP resmin dosya yolu.

Dönen Değerler

Hata oluşursa FALSE aksi takdirde bir resim tanıtıcısı döndürür.

Örnekler

Örnek 1 - Bir WBMP yüklerken oluşan bir hatanın ele alınması

<?php
function WBMPyükle($resimismi)
{
    
/* Resmi açmaya çalışalım */
    
$im = @imagecreatefromwbmp($resimismi);

    
/* Başarılı oldu mu bakalım */
    
if(!$im)
    {
        
/* Boş bir resim oluşturalım */
        
$im  imagecreatetruecolor (2020);
        
$bgc imagecolorallocate($im255255255);
        
$tc  imagecolorallocate($im000);

        
imagefilledrectangle($im001010$bgc);

        
/* Hata iletisini çıktılayalım */
        
imagestring($im155'Yükleme hatası ' $imgname$tc);
    }

    return 
$im;
}

header('Content-Type: image/png');

$img PNGyükle('bozuk.resim');

imagwbmp($img);
imagedestroy($img);
?>

Notlar

Bilginize: WBMP desteği sadece, PHP, GD'nin 1.8 veya sonraki bir sürümünün kurulu olduğu bir platformda derlenmişse kullanılabilir.

Uyarı

PHP'nin 4.3.0 öncesi Windows sürümü uzak dosyalara bu işlev üzerinden erişimi allow_url_fopen etkin olsa bile desteklemez.



imagecreatefromxbm> <imagecreatefromstring
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
imagecreatefromwbmp
alexander at alexauto dot nl
08-Oct-2008 11:59
AeroX created a nice example, but it only works at specific imagesizes because bmp uses fully 32-bit lines. To prevent failures (different colors, pixel-shifting per line), the solution is to skip the padding, inserted after color-pixels on the line. His implementation did cutting the padding into the image-data, causing wrong colors, pixel-shifting per line and also an large memory-consumption.

I improved this script to the next implementation. The readability of a image is checked by a other function, so it doesn't take part in this script.
Suggestions? Please let me know.

<?php
   
public function imagecreatefrombmp($p_sFile)
    {
       
//    Load the image into a string
       
$file    =    fopen($p_sFile,"rb");
       
$read    =    fread($file,10);
        while(!
feof($file)&&($read<>""))
           
$read    .=    fread($file,1024);
       
       
$temp    =    unpack("H*",$read);
       
$hex    =    $temp[1];
       
$header    =    substr($hex,0,108);
       
       
//    Process the header
        //    Structure: http://www.fastgraph.com/help/bmp_header_format.html
       
if (substr($header,0,4)=="424d")
        {
           
//    Cut it in parts of 2 bytes
           
$header_parts    =    str_split($header,2);
           
           
//    Get the width        4 bytes
           
$width            =    hexdec($header_parts[19].$header_parts[18]);
           
           
//    Get the height        4 bytes
           
$height            =    hexdec($header_parts[23].$header_parts[22]);
           
           
//    Unset the header params
           
unset($header_parts);
        }
       
       
//    Define starting X and Y
       
$x                =    0;
       
$y                =    1;
       
       
//    Create newimage
       
$image            =    imagecreatetruecolor($width,$height);
       
       
//    Grab the body from the image
       
$body            =    substr($hex,108);

       
//    Calculate if padding at the end-line is needed
        //    Divided by two to keep overview.
        //    1 byte = 2 HEX-chars
       
$body_size        =    (strlen($body)/2);
       
$header_size    =    ($width*$height);

       
//    Use end-line padding? Only when needed
       
$usePadding        =    ($body_size>($header_size*3)+4);
       
       
//    Using a for-loop with index-calculation instaid of str_split to avoid large memory consumption
        //    Calculate the next DWORD-position in the body
       
for ($i=0;$i<$body_size;$i+=3)
        {
           
//    Calculate line-ending and padding
           
if ($x>=$width)
            {
               
//    If padding needed, ignore image-padding
                //    Shift i to the ending of the current 32-bit-block
               
if ($usePadding)
                   
$i    +=    $width%4;
               
               
//    Reset horizontal position
               
$x    =    0;
               
               
//    Raise the height-position (bottom-up)
               
$y++;
               
               
//    Reached the image-height? Break the for-loop
               
if ($y>$height)
                    break;
            }
           
           
//    Calculation of the RGB-pixel (defined as BGR in image-data)
            //    Define $i_pos as absolute position in the body
           
$i_pos    =    $i*2;
           
$r        =    hexdec($body[$i_pos+4].$body[$i_pos+5]);
           
$g        =    hexdec($body[$i_pos+2].$body[$i_pos+3]);
           
$b        =    hexdec($body[$i_pos].$body[$i_pos+1]);
           
           
//    Calculate and draw the pixel
           
$color    =    imagecolorallocate($image,$r,$g,$b);
           
imagesetpixel($image,$x,$height-$y,$color);
           
           
//    Raise the horizontal position
           
$x++;
        }
       
       
//    Unset the body / free the memory
       
unset($body);
       
       
//    Return image-object
       
return $image;
    }
?>
d at bwdp dot org
14-Aug-2008 11:07
why has php not made a predefined function like imagecreatefrombmp yet? surely there's more demand for it than there is for the wbmp function
AeroX @ aerox-studios
11-May-2008 09:54
.bmp is just hex encoded RGB values.
All you need to do is open in binary mode and seperate the header from the body.
Decode the width and height from the header.
Then create the image pixel by pixel from the RGB values in the body.

function imagecreatefrombmp( $filename )
{
    $file = fopen( $filename, "rb" );
    $read = fread( $file, 10 );
    while( !feof( $file ) && $read != "" )
    {
        $read .= fread( $file, 1024 );
    }
    $temp = unpack( "H*", $read );
    $hex = $temp[1];
    $header = substr( $hex, 0, 104 );
    $body = str_split( substr( $hex, 108 ), 6 );
    if( substr( $header, 0, 4 ) == "424d" )
    {
        $header = substr( $header, 4 );
        // Remove some stuff?
        $header = substr( $header, 32 );
        // Get the width
        $width = hexdec( substr( $header, 0, 2 ) );
        // Remove some stuff?
        $header = substr( $header, 8 );
        // Get the height
        $height = hexdec( substr( $header, 0, 2 ) );
        unset( $header );
    }
    $x = 0;
    $y = 1;
    $image = imagecreatetruecolor( $width, $height );
    foreach( $body as $rgb )
    {
        $r = hexdec( substr( $rgb, 4, 2 ) );
        $g = hexdec( substr( $rgb, 2, 2 ) );
        $b = hexdec( substr( $rgb, 0, 2 ) );
        $color = imagecolorallocate( $image, $r, $g, $b );
        imagesetpixel( $image, $x, $height-$y, $color );
        $x++;
        if( $x >= $width )
        {
            $x = 0;
            $y++;
        }
    }
    return $image;
}
nko38 dot fr at gmail dot com
02-Nov-2005 01:20
for .bmp files, convert them with bmp2png, then you can use this files in gd

http://cetus.sakura.ne.jp/softlab/b2p-home/
clambert at whitecrown dot net
16-Jun-2001 08:47
WBMP images are Wireless Bitmaps, not Windows Bitmaps. WBMP is used for bandwidth constrained, black and white, limited devices such as PDAs and Cell Phones.

imagecreatefromxbm> <imagecreatefromstring
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites