[PHP-users 31625] Re: Spreadsheet::WriteExcelを使用してBitmapの表示

AMO 伊東 丈仁 itoh @ amoffice.co.jp
2007年 3月 6日 (火) 12:05:23 JST


(別の)伊東さま
お返事ありがとうござます。

>Writer/Worksheet.php(line 3382〜):
> // The first 2 bytes are used to identify the bitmap.
>  $identity = unpack("A2ident", $data);
>  if ($identity['ident'] != "BM") {
>    $this->raiseError("$bitmap doesn't appear to be a valid bitmap
image.\n");
>  }

PHP_Classes版を使用していまして、

Worksheet.php(line 2756〜):
    // The first 2 bytes are used to identify the bitmap.
       $identity = unpack("A2", $data);
          if ($identity[''] != "BM") {
            die("$bitmap doesn't appear to be a valid bitmap image.\n");
         }

と表記されています。

>とりあえず手元のMSPaintでテキトウナBMPを作成して先頭2バイトを見たところ
>確かに「BM」となっていました。
これも確認しました。
表示させたいBitmapファイルの先頭は「BM」となっています。

>とはいえ私には unpack("A2ident", $data); がもう一つ理解できず
この $identity = unpack("A2", $data);ですが
$identityの配列内をvar_dumpして見てみました。

/*------Bitmapファイルが出力できないサーバ------*/
 サーバOS:Linux/Fedora Core3
 WEBサーバ:Apache2.0.53
 PHP:4.3.11
 GD/JPG/PNG/WBMP サポートしています。

#var_dumpの結果
array(1) {
  [1]=>string(2) "BM"
}
test.bmp doesn't appear to be a valid bitmap image.

/*------Bitmapファイルが出力できるサーバ------*/
 サーバOS:Linux RaQ550 コバルト
 WEBサーバ:Apache1.3.20
 PHP:4.2.2
 GD/JPG/PNG/WBMP サポートしています。

#var_dumpの結果
array(1) {
  [""]=>string(2) "BM"
}
Bitmapのバイナリコードが以下に続きます。

Bitmap先頭にある「BM」に対してunpackできていないということでしょうか?

unpackというものを使用したことが無く、このような解釈をしています。
ご指導いただけないでしょうか。宜しくお願い致します。



PHP-users メーリングリストの案内