返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/80048.html(转载时请注明来源链接)

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

猜你喜欢
  • PHP怎么处理bmp格式图片
    这篇文章主要介绍了PHP怎么处理bmp格式图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Array (   [0]&...
    99+
    2024-04-02
  • PHP怎么处理bmp格式的图片
    这篇“PHP怎么处理bmp格式的图片”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP怎...
    99+
    2024-04-02
  • 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
  • Java实现bmp和jpeg图片格式互转
    目录Bmp转JpegJpeg转BmpBmp转Jpeg public static String bmp2Jpeg(String filePath, String outPath) {...
    99+
    2023-05-15
    Java bmp和jpeg互转 Java bmp jpeg
  • php怎么将bmp格式转成png
    这篇文章主要介绍“php怎么将bmp格式转成png”,在日常操作中,相信很多人在php怎么将bmp格式转成png问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么将bmp格式转成png”的疑惑有所帮助!...
    99+
    2023-07-05
  • C语言读取和存储bmp格式图片
    开发过程中有时候需要解析bmp数据,下面先简单介绍bmp数据组成,后面附上C语言读取和存储bmp格式图片代码。 典型的位图文件格式通常包含下面几个数据块: 1、BMP文件头:保存位图...
    99+
    2024-04-02
  • php图像转换:将bmp格式转成png
    PHP是一种跨平台的脚本语言,可以用于创建动态网页和Web应用程序。在Web应用程序开发中,我们经常需要对图像进行转换和处理。在本文中,我们将介绍如何使用PHP将BMP格式的图像转换为PNG格式的图像。一、BMP格式和PNG格式的介绍BMP...
    99+
    2023-05-14
    php
  • Android中把bitmap存成BMP格式图片的方法
    最近的项目,做图片的另存为功能,需要把图片存成jpg,png,bmp。对于jpg和png来说相对简单,android提供了bitmap.compress()方法可以马上解决。但...
    99+
    2022-06-06
    方法 图片 bitmap Android
  • Java如何实现bmp和jpeg图片格式互转
    这篇“Java如何实现bmp和jpeg图片格式互转”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现bmp和jp...
    99+
    2023-07-06
  • C语言实现BMP格式图片转化为灰度
    本文实例为大家分享了C语言将BMP格式图片转化为灰度的具体代码,供大家参考,具体内容如下 代码如下: #include<stdio.h> #include<ma...
    99+
    2024-04-02
  • 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
  • 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
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作