欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP imagecreatefrombmp 從BMP文件或URL新建一圖像

 更新時(shí)間:2012年07月16日 17:24:59   作者:  
大家都知道php GD庫(kù)可方便的從URL新建一圖像, GD中有imagecreatefromjpeg(),imagecreatefromPNG()....等
大家都知道php GD庫(kù)可方便的從URL新建一圖像, GD中有imagecreatefromjpeg(),imagecreatefromPNG()....等之類的FUNCTION 可有時(shí)從URL中讀取的切BMP圖像而 可恨的是 GD2中切偏偏沒(méi)有imageCreateFromBMP() 雖然有imagecreatefromWBMP() 但還是相差還是很遠(yuǎn)!
用下面FUNCTION可以方便解決
復(fù)制代碼 代碼如下:

function imagecreatefrombmp($file)
{
global $CurrentBit, $echoMode;
$f=fopen($file,"r");
$Header=fread($f,2);
if($Header=="BM")
{
$Size=freaddword($f);
$Reserved1=freadword($f);
$Reserved2=freadword($f);
$FirstByteOfImage=freaddword($f);
$SizeBITMAPINFOHEADER=freaddword($f);
$Width=freaddword($f);
$Height=freaddword($f);
$biPlanes=freadword($f);
$biBitCount=freadword($f);
$RLECompression=freaddword($f);
$WidthxHeight=freaddword($f);
$biXPelsPerMeter=freaddword($f);
$biYPelsPerMeter=freaddword($f);
$NumberOfPalettesUsed=freaddword($f);
$NumberOfImportantColors=freaddword($f);
if($biBitCount<24)
{
$img=imagecreate($Width,$Height);
$Colors=pow(2,$biBitCount);
for($p=0;$p<$Colors;$p++)
{
$B=freadbyte($f);
$G=freadbyte($f);
$R=freadbyte($f);
$Reserved=freadbyte($f);
$Palette[]=imagecolorallocate($img,$R,$G,$B);
}
if($RLECompression==0)
{
$Zbytek=(4-ceil(($Width/(8/$biBitCount)))%4)%4;
for($y=$Height-1;$y>=0;$y--)
{
$CurrentBit=0;
for($x=0;$x<$Width;$x++)
{
$C=freadbits($f,$biBitCount);
imagesetpixel($img,$x,$y,$Palette[$C]);
}
if($CurrentBit!=0) {freadbyte($f);}
for($g=0;$g<$Zbytek;$g++)
freadbyte($f);
}
}
}
if($RLECompression==1) //$BI_RLE8
{
$y=$Height;
$pocetb=0;
while(true)
{
$y--;
$prefix=freadbyte($f);
$suffix=freadbyte($f);
$pocetb+=2;
$echoit=false;
if($echoit)echo "Prefix: $prefix Suffix: $suffix<BR>";
if(($prefix==0)and($suffix==1)) break;
if(feof($f)) break;
while(!(($prefix==0)and($suffix==0)))
{
if($prefix==0)
{
$pocet=$suffix;
$Data.=fread($f,$pocet);
$pocetb+=$pocet;
if($pocetb%2==1) {freadbyte($f); $pocetb++;}
}
if($prefix>0)
{
$pocet=$prefix;
for($r=0;$r<$pocet;$r++)
$Data.=chr($suffix);
}
$prefix=freadbyte($f);
$suffix=freadbyte($f);
$pocetb+=2;
if($echoit) echo "Prefix: $prefix Suffix: $suffix<BR>";
}
for($x=0;$x<strlen($Data);$x++)
{
imagesetpixel($img,$x,$y,$Palette[ord($Data[$x])]);
}
$Data="";
}
}
if($RLECompression==2) //$BI_RLE4
{
$y=$Height;
$pocetb=0;
/*while(!feof($f))
echo freadbyte($f)."_".freadbyte($f)."<BR>";*/
while(true)
{
//break;
$y--;
$prefix=freadbyte($f);
$suffix=freadbyte($f);
$pocetb+=2;
$echoit=false;
if($echoit)echo "Prefix: $prefix Suffix: $suffix<BR>";
if(($prefix==0)and($suffix==1)) break;
if(feof($f)) break;
while(!(($prefix==0)and($suffix==0)))
{
if($prefix==0)
{
$pocet=$suffix;
$CurrentBit=0;
for($h=0;$h<$pocet;$h++)
$Data.=chr(freadbits($f,4));
if($CurrentBit!=0) freadbits($f,4);
$pocetb+=ceil(($pocet/2));
if($pocetb%2==1) {freadbyte($f); $pocetb++;}
}
if($prefix>0)
{
$pocet=$prefix;
$i=0;
for($r=0;$r<$pocet;$r++)
{
if($i%2==0)
{
$Data.=chr($suffix%16);
}
else
{
$Data.=chr(floor($suffix/16));
}
$i++;
}
}
$prefix=freadbyte($f);
$suffix=freadbyte($f);
$pocetb+=2;
if($echoit) echo "Prefix: $prefix Suffix: $suffix<BR>";
}
for($x=0;$x<strlen($Data);$x++)
{
imagesetpixel($img,$x,$y,$Palette[ord($Data[$x])]);
}
$Data="";
}
}
if($biBitCount==24)
{
$img=imagecreatetruecolor($Width,$Height);
$Zbytek=$Width%4;
for($y=$Height-1;$y>=0;$y--)
{
for($x=0;$x<$Width;$x++)
{
$B=freadbyte($f);
$G=freadbyte($f);
$R=freadbyte($f);
$color=imagecolorexact($img,$R,$G,$B);
if($color==-1) $color=imagecolorallocate($img,$R,$G,$B);
imagesetpixel($img,$x,$y,$color);
}
for($z=0;$z<$Zbytek;$z++)
freadbyte($f);
}
}
return $img;
}
fclose($f);
}
function freadbyte($f)
{
return ord(fread($f,1));
}
function freadword($f)
{
$b1=freadbyte($f);
$b2=freadbyte($f);
return $b2*256+$b1;
}
function freaddword($f)
{
$b1=freadword($f);
$b2=freadword($f);
return $b2*65536+$b1;
}

相關(guān)文章

  • php數(shù)組指針函數(shù)功能及用法示例

    php數(shù)組指針函數(shù)功能及用法示例

    這篇文章主要介紹了php數(shù)組指針函數(shù)功能及用法,結(jié)合實(shí)例形式分析了PHP數(shù)組指針函數(shù)reset(),prev(),current(),next(),end(),key(),each()的功能、用法及針對(duì)數(shù)組鍵值相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • php 結(jié)果集的分頁(yè)實(shí)現(xiàn)代碼

    php 結(jié)果集的分頁(yè)實(shí)現(xiàn)代碼

    php結(jié)果集的分頁(yè),后面都有詳細(xì)的說(shuō)明。最近的php將會(huì)讓你學(xué)到更多。
    2009-03-03
  • PHP變量的定義、可變變量、變量引用、銷毀方法

    PHP變量的定義、可變變量、變量引用、銷毀方法

    這篇文章主要介紹了PHP變量的定義、可變變量、變量引用、銷毀方法,需要的朋友可以參考下
    2013-12-12
  • PHP傳參之傳值與傳址的區(qū)別

    PHP傳參之傳值與傳址的區(qū)別

    這篇文章主要介紹了PHP傳參之傳值與傳址的區(qū)別,十分的簡(jiǎn)單,大家通過(guò)實(shí)例簡(jiǎn)單對(duì)比下就明白了,有需要的小伙伴可以參考下。
    2015-04-04
  • php數(shù)組對(duì)百萬(wàn)數(shù)據(jù)進(jìn)行排除重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼

    php數(shù)組對(duì)百萬(wàn)數(shù)據(jù)進(jìn)行排除重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼

    在平時(shí)的工作中,經(jīng)常接到要對(duì)網(wǎng)站的會(huì)員進(jìn)行站內(nèi)信、手機(jī)短信、email進(jìn)行群發(fā)信息的通知,用戶列表一般由別的同事提供,當(dāng)中難免會(huì)有重復(fù),為了避免重復(fù)發(fā)送,所以我在進(jìn)行發(fā)送信息前要對(duì)他們提供的用戶列表進(jìn)行排重,下面我以u(píng)id列表來(lái)講講我是如何利用php數(shù)組進(jìn)行排重的。
    2010-06-06
  • php中ftp_chdir與ftp_cdup函數(shù)用法

    php中ftp_chdir與ftp_cdup函數(shù)用法

    這篇文章主要介紹了php中ftp_chdir與ftp_cdup函數(shù)用法,以實(shí)例形式講述了PHP中的FTP目錄操作技巧,具有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • PHP 文件上傳后端處理實(shí)用技巧方法

    PHP 文件上傳后端處理實(shí)用技巧方法

    這篇文章主要介紹了PHP 文件上傳后端處理實(shí)用技巧方法的相關(guān)資料,這里對(duì)后端處理做了詳解并附簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下
    2017-01-01
  • 全面解讀PHP的人氣開發(fā)框架Laravel

    全面解讀PHP的人氣開發(fā)框架Laravel

    這篇文章主要介紹了PHP的人氣開發(fā)框架Laravel,并對(duì)一些主要的技術(shù)特點(diǎn)進(jìn)行了相關(guān)的舉例,需要的朋友可以參考下
    2015-10-10
  • 淺談PHP錯(cuò)誤類型及屏蔽方法

    淺談PHP錯(cuò)誤類型及屏蔽方法

    下面小編就為大家?guī)?lái)一篇淺談PHP錯(cuò)誤類型及屏蔽方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Fatal error: ''break'' not in the ''loop'' or ''switch'' context in Function.php

    Fatal error: ''break'' not in the ''loop'' or ''switch'' con

    PHPexcel報(bào)出錯(cuò)誤Fatal error: 'break' not in the 'loop' or 'switch' context in Function.php on line 463.,需要的朋友可以參考下
    2021-06-06

最新評(píng)論