php GD ライブラリが URL から簡単に新しい画像を作成できることは誰もが知っています。GD には、URL から BMP 画像を読み取ることができる imagecreatefromjpeg()、imagecreatefromPNG()... などの関数があります。 Zhongqie には imageCreateFromBMP() はありませんが、imagecreatefromWBMP() はまだ遅れています。
次の関数を使用して問題を簡単に解決します
function imagecreatefrombmp($file)
{
global $CurrentBit, $echoMode( $file,"r") ;
$Header=fread($f,2);
if($Header=="BM")
$Size=freadword($f); f);
$Reserved2= freadword($f);
$SizeBITMAPINFOHEADER=freaddword($f); f);
$biPlanes=フリーワード($f);
$幅x高さ=フリーワード($f); f);
$biYPelsPerMeter= フレッドワード($f);
$使用パレット数=フレッドワード($f);
if($biBitCount$img=imagecreate($)幅,$高さ);
$Colors=pow(2,$biBitCount);
for($p=0;$p$B=freadbyte($f); =freadbyte($f);
$R=freadbyte($f);
$Palette($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{
$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=$pocetb=0; true)
$y --;
$suffix=freadbyte($f);
$echoit=false;プレフィックス: $prefix サフィックス: $ suffix
";
if(($prefix==0)and($suffix==1)) ブレーク;
if(feof($f)) ブレーク;
while(!( ($prefix==0) and($suffix==0)))
{
if($prefix==0)
{
$pocet=$suffix;
$Data.=fread($f,$pocet) ;
$pocetb+=$pocet ;
if($pocetb%2==1) {freadbyte($f);}
}
if($prefix>0)
for($r=0; $r$Data.=chr($suffix)
$prefix=freadbyte($f);
$pocetb+=2;
if ($echoit) echo "プレフィックス: $prefix サフィックス: $suffix
";
for($x=0;$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 サフィックス
";
if(($prefix==0)and($suffix==1) if(feof($f) ) ブレーク;
while(!(($prefix==0)and($suffix==0)))
{
if($prefix==0)
{
$pocet=$サフィックス;
$CurrentBit=0 ;
for($h=0;$h$Data.=chr(freadbits($f,4)); freadbits($f,4) ;
$pocetb+=ceil(($pocet/2));
if($pocetb%2==1) {freadbyte($f);}
}
if($プレフィックス>0)
{
$pocet=$prefix;
$i=0;
for($r=0;$r{
if($i%2==0)
{
$Data.=chr ($suffix%16);
}
else
{
$Data.=chr(floor($suffix/16));
$i++; freadbyte($f);
$suffix=freadbyte($f);
if($echoit) echo "プレフィックス: $prefix サフィックス: $suffix
"; =0;$x{
imagesetpixel($img,$x,$y,$Palette[ord($Data[$x])]); "";
}
}
if($biBitCount==24)
{
$img=imagecreatetruecolor($Width,$Height)
for($y=$Height-1; ;$y>=0; $y--)
{
for($x=0;$x{
$B=freadbyte($f); 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;$zfreadbyte($f) );
}
}
return $img;
fclose($f)
{
return ord(fread($f,1)); $f)
{
$ b1=freadbyte($f);
$b2*256+$b1;
関数 freaddword($f)
$b1= freadword($f);
$b2=freadword($f)
$b2*65536+$b1;
http://www.bkjia.com/PHPjc/325636.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/325636.html技術記事ご存知のとおり、php GD ライブラリには、URL から新しい画像を簡単に作成できます。GD には、imagecreatefromjpeg()、imagecreatefromPNG()... など、URL から BMP 画像を読み込むことができる機能がありますが、これは面倒です...