| 
 | 
 
 
            本文分析了PHP处理bmp格式图片的方法。分享给大家供大家参考,具体如下: 
白天QA提出项目上传图片有问题,具体为:上传成功,预览失败。我去了之后,又上传了几张其他的图片可以上传,然后仔细问了下他上传的是哪张图片,看了后使用getimagesize函数打印了下。 
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也行,下面贴出代码。 
= 0) { 
    $X = 0; 
    while ($X > 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相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP网络编程技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 
希望本文所述对大家PHP程序设计有所帮助。 
             
             
您可能感兴趣的文章:php 将bmp图片转为jpg等其他任意格式的图片简单PHP上传图片、删除图片实现代码PHP 图片文件上传实现代码PHP支持多种格式图片上传(支持jpg、png、gif)PHP imagecreatefrombmp 从BMP文件或URL新建一图像PHP判断图片格式的七种方法小结php文字水印和php图片水印实现代码(二种加水印方法)php+ajax实现图片文件上传功能实例PHP生成图片验证码、点击切换实例php实现常见图片格式的水印和缩略图制作(面向对象)php实现将base64格式图片保存在指定目录的方法解决PHP上传非标准格式的图片pjpeg失败的方法 
         |   
 
 
 
 |