当前位置:主页 > 网页教程 > 网页制作 > wap网站教程 > 内容欢迎大家投稿

WAP建站入门教程八、动态输出WBMP

时间:2009-10-03 08:25来源:未知 作者:大宝库 点击:读取中
阅读工具:字体:
WBMP的格式
    对于一个宽为16个像素,高15个像素的白色画面,WBMP文件的数据如下:
                0x00,0x00,0x10,0x0f,0xff,0xff.……0xff。
    头两个字节为0。第一个字节是文件类型,0表示非压缩的黑白图片。第二个是文件扩展,是保留字段。第三个字节为图片的宽。第四个字节图片的高。后面的都是图像数据。
    对于非压缩的黑白图片,数据格式有以下特点:每个位对应着一个像素。0表示黑色,1表示白色。高位开始到底位结束对应着从左到右的像素颜色。数据从低地址到高地址对应着图片从上到下。一个字节可以表示8个像素,不足的部分可以用0补齐。
    下面是一张太阳的图片:
0x00 //file type=0
0x00 //file extension 没有使用
0x14 //宽
0x14 //高
//Pixel data
0xfa,0xf5,0xf0,0xfb,0x6d,0xf0,0xfb,0xad,0xf0,0xfb,
0xdd,0x80,0x1b,0xfc,0x70,0xe7,0x1f,0xe0,0x7c,0xe7,
0xd0,0xbb,0xfb,0xd0,0xdb,0xfb,0xb0,0xd7,0xfd,0x70,
0xb7,0xfd,0xb0,0x77,0xf5,0xd0,0xfb,0xeb,0xe0,0xfb,
0xdb,0xf0,0x1c,0xe7,0x80,0xc7,0x1c,0x70,0xf7,0xfd,
0xf0,0xf7,0xbf,0xf0,0xf6,0x5d,0xf0,0xf5,0xed,0xf00
    以下的两个程序都是要显示一个长为5高为2的WBMP图片。该图片第一行为白色,第二行为黑色。为此使用Nokia WAP Toolkit做了一个5*2的WBMP图片,上行是黑的,下行是白的。整个WBMP文件总共六个字节,所有的数据如下:
0x00 //file type=0表示黑白的非压缩方式
0x00 //file extension保留字段
0x05 //宽
0x02 //高
0x00 //第一行像素
0xf8 //第二行像素
    由于宽为5不是8的倍数,因此右边的位使用0补齐。因此出现了第二行的0xf8,换成二进制就是:11111000。只有左边的五位是1,剩余的三位是0。
需要注意的是:在做测试之前需要在MIME文件类型映射表中加入相应的WBMP文件映射。

使用ASP动态输出WBMP图片
wbmp.asp

<%@ Language=VBScript %>
<%
    Function StoB(varstr)
        str2bin = ""
        For i = 1 To Len(varstr)
            varchar = Mid(varstr, i, 1)
            str2bin = str2bin & ChrB(AscB(varchar))
        Next
        StoB = str2bin
    End Function

    img=chr(0) & chr(0) & chr(5) & chr(2) & chr(0) & chr(&Hf8)

    Response.ContentType="image/vnd.wap.wbmp"
    Response.BinaryWrite stob(img)
%>
    WML调用部分的程序如下:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="main">
    <p>
        <img src="http://127.0.0.1/wap/wbmp.asp" alt=":)" />
    </p>
</card>
</wml>
    启动Nokia WAP Toolkit,在“Go”下选择“Open Location”,并输入URL地址(图2-37):

图 2-37 输入URL地址
在确认后,模拟器上出现图2-38:(短短的一条直线正是想要的WBMP!)

图 2-38 动态输出的WBMP图像

使用ISAPI动态输出WBMP图片
    先使用Visual C&C++ 6.0的ISAPI Wizard生成一个工程文件——WBMP。在WBMP.cpp中找到Default(CHttpServerContext* pCtxt)函数。按照下面的形式进行修改:
void CWBMPExtension::Default(CHttpServerContext* pCtxt)
{
/*
StartContent(pCtxt);
WriteTitle(pCtxt);

*pCtxt << _T("This default message was produced by the Internet");
*pCtxt << _T(" Server DLL Wizard. Edit your CWBMPExtension::Default()");
*pCtxt << _T(" implementation to change it.\r\n");

EndContent(pCtxt);
*/
AddHeader(pCtxt, "Content-type: image/vnd.wap.wbmp\r\n");

BYTE img[6]={0x00,0x00,0x05,0x02,0x00,0xf8};

CHtmlStream htmlStream;
htmlStream.Write(img,6);

*pCtxt<<htmlStream;
}
    WML调用部分的程序如下:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="main">
    <p>(责任编辑:大宝库)


------分隔线----------------------------
推荐内容
  • WAP手机上网问题问与答

    一、我如何键入网址? 1、打开手机,进入服务功能选项 2、按下确定键 3、选中书签 4、...

  • WML语法大全

    WML是一种基于XML(扩展标记语言)的一种标记语言。这种语言是为无线设备用户提供交互...

  • 全面解析WAP技术

    什么是WAP WAP就是无线应用协议(WirelessApplicationProtocol)的简称。虽然它跟联合国...

  • 用QuickWAP组件建设Wap站点

    用QuickWAP组件建设Wap站点教程-准备篇 首先我们要简单了解一下什么是QuickWAP,Quick...

赞助商链接
赞助商链接