广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP怎么处理bmp格式图片
  • 723
分享到

PHP怎么处理bmp格式图片

2024-04-02 19:04:59 723人浏览 泡泡鱼
摘要

这篇文章主要介绍了PHP怎么处理bmp格式图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Array (   [0]&

这篇文章主要介绍了PHP怎么处理bmp格式图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Array
(
  [0] => 494
  [1] => 260
  [2] => 6
  [3] => width="494" height="260"
  [bits] => 24
  [mime] => image/x-ms-bmp
)

仔细看下,上面打印的数组,mime为image/x-ms-bmp,也就是bmp格式的,印象中php的gd库没有处理这个函数,后来我便在配置文件中,只要mime为这种的便不能上传。

晚上回来后,我便在网上查找php处理bmp相关方法,后来终于在stackoverflow中找到了,帖子里说进入官网的有关imagecreate的函数评论,有个ImageCreateFromBMP方法,先把bmp格式的文件给此函数调用,再用imagejpeg保存就行,后来试了下,发现imagepng也行,下面贴出代码。

<?php
function ImageCreateFromBMP($filename) {
  //Ouverture du fichier en mode binaire
  if (!$f1 = fopen($filename, "rb"))
    return FALSE;
  //1 : Chargement des ent�tes FICHIER
  $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1, 14));
  if ($FILE['file_type'] != 19778)
    return FALSE;
  //2 : Chargement des ent�tes BMP
  $BMP = unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel' .
      '/Vcompression/Vsize_bitmap/Vhoriz_resolution' .
      '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1, 40));
  $BMP['colors'] = pow(2, $BMP['bits_per_pixel']);
  if ($BMP['size_bitmap'] == 0)
    $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset'];
  $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel'] / 8;
  $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']);
  $BMP['decal'] = ($BMP['width'] * $BMP['bytes_per_pixel'] / 4);
  $BMP['decal'] -= floor($BMP['width'] * $BMP['bytes_per_pixel'] / 4);
  $BMP['decal'] = 4 - (4 * $BMP['decal']);
  if ($BMP['decal'] == 4)
    $BMP['decal'] = 0;
  //3 : Chargement des couleurs de la palette
  $PALETTE = array();
  if ($BMP['colors'] < 16777216) {
    $PALETTE = unpack('V' . $BMP['colors'], fread($f1, $BMP['colors'] * 4));
  }
  //4 : Cr�ation de l'image
  $IMG = fread($f1, $BMP['size_bitmap']);
  $VIDE = chr(0);
  $res = imagecreatetruecolor($BMP['width'], $BMP['height']);
  $P = 0;
  $Y = $BMP['height'] - 1;
  while ($Y >= 0) {
    $X = 0;
    while ($X < $BMP['width']) {
      if ($BMP['bits_per_pixel'] == 24)
        $COLOR = unpack("V", substr($IMG, $P, 3) . $VIDE);
      elseif ($BMP['bits_per_pixel'] == 16) {
        $COLOR = unpack("n", substr($IMG, $P, 2));
        $COLOR[1] = $PALETTE[$COLOR[1] + 1];
      } elseif ($BMP['bits_per_pixel'] == 8) {
        $COLOR = unpack("n", $VIDE . substr($IMG, $P, 1));
        $COLOR[1] = $PALETTE[$COLOR[1] + 1];
      } elseif ($BMP['bits_per_pixel'] == 4) {
        $COLOR = unpack("n", $VIDE . substr($IMG, floor($P), 1));
        if (($P * 2) % 2 == 0)
          $COLOR[1] = ($COLOR[1] >> 4);
        else
          $COLOR[1] = ($COLOR[1] & 0x0F);
        $COLOR[1] = $PALETTE[$COLOR[1] + 1];
      }
      elseif ($BMP['bits_per_pixel'] == 1) {
        $COLOR = unpack("n", $VIDE . substr($IMG, floor($P), 1));
        if (($P * 8) % 8 == 0)
          $COLOR[1] = $COLOR[1] >> 7;
        elseif (($P * 8) % 8 == 1)
          $COLOR[1] = ($COLOR[1] & 0x40) >> 6;
        elseif (($P * 8) % 8 == 2)
          $COLOR[1] = ($COLOR[1] & 0x20) >> 5;
        elseif (($P * 8) % 8 == 3)
          $COLOR[1] = ($COLOR[1] & 0x10) >> 4;
        elseif (($P * 8) % 8 == 4)
          $COLOR[1] = ($COLOR[1] & 0x8) >> 3;
        elseif (($P * 8) % 8 == 5)
          $COLOR[1] = ($COLOR[1] & 0x4) >> 2;
        elseif (($P * 8) % 8 == 6)
          $COLOR[1] = ($COLOR[1] & 0x2) >> 1;
        elseif (($P * 8) % 8 == 7)
          $COLOR[1] = ($COLOR[1] & 0x1);
        $COLOR[1] = $PALETTE[$COLOR[1] + 1];
      } else
        return FALSE;
      imagesetpixel($res, $X, $Y, $COLOR[1]);
      $X++;
      $P += $BMP['bytes_per_pixel'];
    }
    $Y--;
    $P+=$BMP['decal'];
  }
  //Fermeture du fichier
  fclose($f1);
  return $res;
}
$pic = '2.bmp';
$res = ImageCreateFromBMP($pic);
imagepng($res, '1.png');
imagejpeg($res, '1.jpeg');

感谢你能够认真阅读完这篇文章,希望小编分享的“PHP怎么处理bmp格式图片”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网PHP编程频道,更多相关知识等着你来学习!

--结束END--

本文标题: PHP怎么处理bmp格式图片

本文链接: https://www.lsjlt.com/news/80048.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP怎么处理bmp格式图片
    这篇文章主要介绍了PHP怎么处理bmp格式图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Array (   [0]&...
    99+
    2022-10-19
  • PHP怎么处理bmp格式的图片
    这篇“PHP怎么处理bmp格式的图片”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP怎...
    99+
    2022-10-19
  • Java怎么实现bmp和jpeg图片格式互转
    这篇文章主要介绍“Java怎么实现bmp和jpeg图片格式互转”,在日常操作中,相信很多人在Java怎么实现bmp和jpeg图片格式互转问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么实现bmp和j...
    99+
    2023-07-06
  • Python怎么将bmp格式的图片批量转成jpg
    这篇文章主要介绍“Python怎么将bmp格式的图片批量转成jpg”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么将bmp格式的图片批量转成jpg”文章能帮助大家解决问题。将bmp格式...
    99+
    2023-07-05
  • php怎么将bmp格式转成png
    这篇文章主要介绍“php怎么将bmp格式转成png”,在日常操作中,相信很多人在php怎么将bmp格式转成png问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么将bmp格式转成png”的疑惑有所帮助!...
    99+
    2023-07-05
  • php怎么实现图片格式转jpg
    图片格式转JPG:使用PHP图片是我们网站和应用程序中的基本元素之一。但是,有时候我们需要将图片转换为其他格式。其中,将图片转换为JPG格式是最常见的需求之一。在这篇文章中,我们将学习如何使用PHP语言将图片转换为JPG格式。为什么要将图片...
    99+
    2023-05-14
  • php 怎么把网页转换成图片格式
    php 怎么把网页转换成图片格式?PHP将整个网页html转换为图片并保存【含滚屏】安装chrome-php/chromecomposer require chrome-php/chromechromium安装(自行百度)Chromium是...
    99+
    2021-12-23
    php
  • win7图片格式怎么更改
    这篇文章主要讲解了“win7图片格式怎么更改”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win7图片格式怎么更改”吧!win7图片格式更改教程首先打开“画图”工具点击左上角“文件”或者图示...
    99+
    2023-07-01
  • Linux命令行处理图片方式(图片格式转换、缩放、旋转等)
    目录linux命令行处理图片1. 转换图像格式2. 缩放图像3. 旋转图像Linux命令行批处理图片,批量去除截图的无用部分总结Linux命令行处理图片 Centos OS 中默认安装了 ImageMagick,Imag...
    99+
    2023-06-17
    Linux命令行处理图片 Linux图片格式转换 Linux图片缩放 Linux图片旋转
  • 浅析怎么将php页面转为图片格式
    最近,越来越多的网站需要将PHP页面转换成图片格式。这种需求是因为,有些客户可能需要保存页面内容而无法复制它,或者他们希望分享给其他人。这个问题的解决方案是相对简单的,因为可以使用PHP的GD扩展来生成图片版本的网页。GD扩展是PHP中的一...
    99+
    2023-05-14
    php
  • PHP图片处理库Grafika怎么使用
    本篇内容介绍了“PHP图片处理库Grafika怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Grafika是一个PHP图像处理库,是...
    99+
    2023-06-17
  • php中怎么让图片没有缓存文件格式
    PHP是一种广泛使用的服务器端脚本语言,您可以为Web应用程序编写PHP代码并将其运行在服务器上。在PHP中,有时会遇到一些图片缓存相关的问题,比如说在浏览器中打开某个网站时,它的图片无法更新或者变化很慢。这通常是由于浏览器或者服务器缓存图...
    99+
    2023-05-14
  • WPS2019图片怎么转换为PDF格式
    要将WPS2019中的图片转换为PDF格式,可以按照以下步骤操作:1. 打开WPS2019软件,并点击左上角的“文件”选项卡。2. ...
    99+
    2023-09-16
    wps
  • 怎么识别一张图片的格式
    本篇内容介绍了“怎么识别一张图片的格式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在有些时候,我们拿到了...
    99+
    2022-10-19
  • Linux下怎么查看WebP图片格式
    小编给大家分享一下Linux下怎么查看WebP图片格式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!WebP具有更优的图像数据压缩算法,能带来更小的图片体积,而且...
    99+
    2023-06-27
  • 电脑jpg格式图片怎么设置
    本文小编为大家详细介绍“电脑jpg格式图片怎么设置”,内容详细,步骤清晰,细节处理妥当,希望这篇“电脑jpg格式图片怎么设置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。设置方法首先点击左下角的开始然后在搜索框中...
    99+
    2023-07-01
  • windows下png怎么转jpg格式图片
    本篇内容主要讲解“windows下png怎么转jpg格式图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows下png怎么转jpg格式图片”吧!png转jpg格式图片步骤方法一:首先找...
    99+
    2023-07-04
  • golang怎么处理图片
    随着互联网的快速发展,图片处理已经成为Web开发中不可避免的一环,Golang也不例外。Golang在图片处理方面已经拥有了非常丰富的工具,比如标准库中的image包、第三方库中的goimage、imagick等等。本文将详细介绍Golan...
    99+
    2023-05-15
  • php不能处理太大图片怎么办
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php不能处理太大图片怎么办?PHP 大图片操作导致内存崩溃及超时的问题项目有时需要对图片进行采集,并进行采集后的处理,如:生成略缩图、裁剪、调整大小等。采集受到网络和系统性...
    99+
    2021-10-25
    php
  • 电脑默认图片格式怎么修改
    要修改电脑的默认图片格式,您需要按照以下步骤操作:1. 打开“控制面板”。2. 点击“外观和个性化”。3. 选择“文件夹选项”。4....
    99+
    2023-09-07
    电脑
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作