当前位置:首页 > 日记 > 正文

PHPimagecreatefrombmp创建从BMP文件或URL的图像

PHPimagecreatefrombmp创建从BMP文件或URL的图像
我们都知道PHP GD可以方便的新URL的图像,imagecreatefromjpeg Gd(imagecreatefrompng)、(功能)的…这样有时可以BMP切割图像从URL和GD2读是可恨的是切(没有imagecreatefrombmp)虽然imagecreatefromwbmp()但仍遥远!
使用下面的函数可以很容易地解决
复制代码代码如下所示:
功能imagecreatefrombmp(文件)
{
全球currentbit美元,echomode美元;
$ F = fopen(文件,R);
$标题= fread($,2);
如果(头=BM)
{
美元($)freaddword大小=;
保留1 = freadword美元($);
保留2 = freadword美元($);
firstbyteofimage = freaddword美元($);
sizebitmapinfoheader = freaddword美元($);
宽度= freaddword美元($);
高度= freaddword美元($);
美元($)= freadword双翼;
bibitcount = freadword美元($);
rlecompression = freaddword美元($);
widthxheight = freaddword美元($);
bixpelspermeter = freaddword美元($);
biypelspermeter = freaddword美元($);
numberofpalettesused = freaddword美元($);
numberofimportantcolors = freaddword美元($);
如果($ bibitcount<24)
{
img =画面欣赏美元(美元美元的宽度,高度);
颜色=战俘(2美元,bibitcount美元);
对于($ = 0;$ < $颜色;$ + +)
{
B = freadbyte美元($);
G = freadbyte美元($);
R = freadbyte美元($);
美元($)freadbyte保留=;
调色板{ } = imagecolorallocate(美元美元美元美元IMG,R,G,B美元);
}
如果($ rlecompression = = 0)
{
zbytek美元=((4-ceil(($宽度/(8元/ bibitcount)))% 4)% 4;
为($ Y = $ height-1;Y元> = 0;Y元--)
{
currentbit = 0美元;
($ x = 0;$ x千美元宽度;$ x +)
{
C = freadbits美元($,$ bibitcount);
imagesetpixel($ IMG,X、Y元,美元美元调色板{ });
}
如果(currentbit美元!= 0){ freadbyte($);}
为($ G = 0;G组zbytek美元美元美元;G + +)
Freadbyte($);
}
}
}
如果($ rlecompression = = 1) / / bi_rle8美元
{
$ y = $高度;
pocetb = 0美元;
虽然(真实)
{
美元—;
前缀= freadbyte美元($);
后缀= freadbyte美元($);
pocetb + = 2美元;
echoit美元= false;
如果($ echoit)回波前缀,前缀后缀后缀:美元美元;
如果((前缀= = 0)和($后缀= 1))中断;
如果(外汇经营资金($))打破;
而(!(($前缀= 0)和($后缀= 0))
{
如果($ = 0)
{
袖珍=美元美元的后缀;
美元数据。= fread($,$ POCET);
pocetb美元= POCET美元;
如果($ pocetb % 2 = = 1){ freadbyte($);$ pocetb ++;}
}
如果(前缀$ 0)
{
袖珍= $前缀美元;
为($ R = 0;r<袖珍美元;r + +)
美元数据。= CHR($后缀);
}
前缀= freadbyte美元($);
后缀= freadbyte美元($);
pocetb + = 2美元;
如果($ echoit)回波前缀,前缀后缀后缀:美元美元;
}
为($ x = 0;X元< strlen($数据);X元+ +)
{
imagesetpixel($ IMG,X、Y元,$调色板{ ORD($数据{ x美元})));
}
$;
}
}
如果($ rlecompression = = 2) / / bi_rle4美元
{
$ y = $高度;
pocetb = 0美元;
(虽然)!Feof($))
回声freadbyte($)。_。Freadbyte($);* /。
虽然(真实)
{

美元—;
前缀= freadbyte美元($);
后缀= freadbyte美元($);
pocetb + = 2美元;
echoit美元= false;
如果($ echoit)回波前缀,前缀后缀后缀:美元美元;
如果((前缀= = 0)和($后缀= 1))中断;
如果(外汇经营资金($))打破;
而(!(($前缀= 0)和($后缀= 0))
{
如果($ = 0)
{
袖珍=美元美元的后缀;
currentbit = 0美元;
为($ H = 0;美元美元美元H<袖珍;H + +)
美元数据。= CHR(freadbits($,4));
如果(currentbit美元!= 0)freadbits($,4);
pocetb美元=细胞((($ POCET / 2));
如果($ pocetb % 2 = = 1){ freadbyte($);$ pocetb ++;}
}
如果(前缀$ 0)
{
袖珍= $前缀美元;
$ I = 0;
为($ R = 0;r<袖珍美元;r + +)
{
如果($ i = 2 = 0)
{
美元数据。= CHR(后缀为16美元);
}
其他的
{
美元数据。= CHR(地板($后缀 / 16));
}
美元+;
}
}
前缀= freadbyte美元($);
后缀= freadbyte美元($);
pocetb + = 2美元;
如果($ echoit)回波前缀,前缀后缀后缀:美元美元;
}
为($ x = 0;X元< strlen($数据);X元+ +)
{
imagesetpixel($ IMG,X、Y元,$调色板{ ORD($数据{ x美元})));
}
数据= 美元;
}
}
如果($ bibitcount = = 24)
{
img =新建一个真彩色图像(美元美元美元的宽度,高度);
zbytek = $ 4美元的宽度;
为($ Y = $ height-1;Y元> = 0;Y元--)
{
($ x = 0;$ x千美元宽度;$ x +)
{
B = freadbyte美元($);
G = freadbyte美元($);
R = freadbyte美元($);
颜色= imagecolorexact(美元美元美元美元IMG,R,G,B美元);
如果($颜色= = 1)颜色= imagecolorallocate美元(美元美元美元IMG,R,G,B美元);
imagesetpixel($ IMG,X、Y元,合色);
}
为($ Z = 0;美元美元美元Z < zbytek;Z + +)
Freadbyte($);
}
}
Return $img;
}
Fclose($);
}
功能freadbyte($)
{
返回ORD(fread($,1));
}
功能freadword($)
{
B1 = freadbyte美元($);
B2 = freadbyte美元($);
返回$ B2 * 256 + B1;
}
功能freaddword($)
{
B1 = freadword美元($);
B2 = freadword美元($);
返回$ B2 * 65536 + B1;
}

相关文章

打开Word提示符还原我的工作并重新

打开Word提示符还原我的工作并重新

解决方案,重新启动,提示符,工作,电脑软件,问题: 最近,当用词工作时,总是有问题。双击打开Word程序,总是提示恢复我的工作并重新启动微软Office word重启后,我进入安全模式的话,和工具栏不见了。我不知道为什么打开Word每次进入安全模式 答案uff1…

使用指令中常用的mysql截取函数

使用指令中常用的mysql截取函数

函数,指令,常用,电脑软件,mysql,常用的MySQL的拦截功能:左(右),(),(),()substring_index串。 这里解释: 1。左截获左(STR,长度) 2。右截获右(STR,长度) 3.substring(STR,POS);子(STR,POS,Len) 4.substring_index(STR,delim,计数)…

如何在Win8或Win8.1屏幕截图功能归

如何在Win8或Win8.1屏幕截图功能归

自动保存,归零,屏幕截图,桌面,功能,点评:在Win8系统,使用Win + PrintScreen直接全屏截图,自动保存当前系统的屏幕截图文件夹下。但是,很多时候我们想零键或自动保存桌面,我们怎么做今天分享的教程是如何实现Win8或Win8.1截图零和自动保存到桌面 …

DB类选择查询加入ZF框架链表使用的

DB类选择查询加入ZF框架链表使用的

框架,链表,查询,选择,例子,Zend框架的查询()链表举例 复制代码代码如下所示: 加载程序(自动装入类)的引入 require_once(禅 /装载机。PHP ); 将加载程序类使用到DB类中 zend_loader::loadClass(zend_db ); 介绍zend_db / /状态控制器。 zend_loader::load…

在linux系统中显示中文目录和文件

在linux系统中显示中文目录和文件

文件名,系统,显示中文,方法,目录,点评:在Linux系统中显示中文目录和文件名,最简单和最好的方法是使用代码,本章为您介绍fstab文件的使用来解决 选择一个一劳永逸的是 / /等下修改fstab文件的一种方式,而我的fstab内容如下: / / / dev hda9 ext2…

php英文字母大小写转换功能汇总

php英文字母大小写转换功能汇总

大小写转换,英文字母,功能,电脑软件,php,每个单词的第一个字母转换为大写:ucwords() 复制代码代码如下: 变量$foo = 'Hello World! 为foo = ucwords($ Foo); / /你好世界! $吧= 'Hello World! $吧= ucwords($条); / /你好世界! 酒吧= ucwords(strtolowe…

exshow95.exe是什么过程exshow95过

exshow95.exe是什么过程exshow95过

过程,信息查询,电脑软件,exe,点评:exshow95.exe是Kensington相关产品方案 进程文件:exshow95或exshow95.exe 进程名称:eexshow95 过程类别:安全风险的过程 英文描述: exshow95.exe是Kensington产品相关的过程。它改进了它,它也被称为以下两个方…

Win8.1键盘和鼠标不能使用停止工作

Win8.1键盘和鼠标不能使用停止工作

键盘,解决方案,鼠标,工作,电脑软件,点评:Win8.1安装后,鼠标和键盘停止工作,但微软尚未发布的解决方案或相关补丁来解决这个问题。这里有一个快速的解决方案有类似情况的朋友。 有些用户反映,在安装Win8.1,鼠标和键盘停止工作,但微软尚未发布的解…

太空音乐盒,音乐的收藏地在哪里

太空音乐盒,音乐的收藏地在哪里

音乐,音乐盒,太空,收藏,电脑软件,QQ空间音乐盒和QQ音乐的集合是同步的。即使在空间音乐盒中收集的歌曲可以在QQ音乐中观看,QQ音乐中收集的歌曲也可以在空间中观看和管理。 检查方法:登录你的QQ空间音乐盒上的点击后;我在页面的底部,音乐;我在他…

深的Apache配置文件httpd.conf部分

深的Apache配置文件httpd.conf部分

参数说明,配置文件,电脑软件,Apache,conf,…-设置指定目录的访问权限 …——设置指向指定文件的指令 示例:拒绝访问以HT开头的文件 命令允许,拒绝 所有否认 …-为特定URL设置指令,容器包含只适用于特定URL的指令。 …——虚拟主机的配置 设…

和MySQL的CHAR和VARCHAR类型详细解

和MySQL的CHAR和VARCHAR类型详细解

解释,类型,详细,电脑软件,MySQL,1。进化: 对MySQL数据库的varchar类型的最大长度是255以下版本中,和数据的范围可以是0 ~ 255。 在mysql5.0.3及以上版本,65535的varchar数据类型支持的长度,这意味着你可以存储65532字节的数据,启动和停止位占…

win7不装定时拷贝文件等假死

win7不装定时拷贝文件等假死

假死,拷贝文件,电脑软件,点评:比如开机时电脑不会出现假死、假死、右键点击、停止响应、复制文件、暂停动画等等,如何解决这些问题下面给出详细的解决方案。有兴趣的朋友不该错过。 我们使用的是Windows7,那么Windows7会遇到一些问题,如死亡。…