- 浏览: 224201 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (143)
- java (13)
- mongodb (15)
- linux (31)
- mysql (2)
- cache (1)
- Android (3)
- lucene (2)
- javascript (9)
- php (13)
- 人生 (2)
- solr (7)
- 跨域iframe (1)
- 统计学 (1)
- redis (0)
- amazon aws (2)
- 国内比较便宜的vps (1)
- nginx (5)
- sns api应用 (1)
- api (1)
- postfix (1)
- nodejs (1)
- gitlab (1)
- myeclipse (1)
- matlab (3)
- ubuntu (2)
- stardict (1)
- cdn (1)
- lajp (1)
- workerman (1)
- tensorflow (1)
- 协同推荐算法 (3)
- html5 (1)
- extensions (3)
- Rome (1)
- 正则 (1)
- EBS (1)
- python (5)
- https (1)
- iptables (1)
- facebook (0)
- ImageMagick (0)
- elasticsearch (1)
- Flask (1)
- wordpress (0)
- kubernetes (0)
最新评论
-
三尺寒冰:
怎么实现排序的?分析一下
php mongodb 实现group 并按照某字段排序
有gd库不支持bmp格式的图片缩放,裁剪,所以可以通过改变图片格式,然后再裁剪
以下是吧bmp格式的图片裁剪成png格式:
<?php
function ConvertBMP2GD($src, $dest = false) {
if(!($src_f = fopen($src, "rb"))) {
return false;
}
if(!($dest_f = fopen($dest, "wb"))) {
return false;
}
$header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f, 14));
$info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", fread($src_f, 40));
extract($info);
extract($header);
if($type != 0x4D42) { // signature "BM"
return false;
}
$palette_size = $offset - 54;
$ncolor = $palette_size / 4;
$gd_header = "";
// true-color vs. palette
$gd_header .= ($palette_size == 0) ? "\xFF\xFE" : "\xFF\xFF";
$gd_header .= pack("n2", $width, $height);
$gd_header .= ($palette_size == 0) ? "\x01" : "\x00";
if($palette_size) {
$gd_header .= pack("n", $ncolor);
}
// no transparency
$gd_header .= "\xFF\xFF\xFF\xFF";
fwrite($dest_f, $gd_header);
if($palette_size) {
$palette = fread($src_f, $palette_size);
$gd_palette = "";
$j = 0;
while($j < $palette_size) {
$b = $palette{$j++};
$g = $palette{$j++};
$r = $palette{$j++};
$a = $palette{$j++};
$gd_palette .= "$r$g$b$a";
}
$gd_palette .= str_repeat("\x00\x00\x00\x00", 256 - $ncolor);
fwrite($dest_f, $gd_palette);
}
$scan_line_size = (($bits * $width) + 7) >> 3;
$scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03) : 0;
for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) {
// BMP stores scan lines starting from bottom
fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l));
$scan_line = fread($src_f, $scan_line_size);
if($bits == 24) {
$gd_scan_line = "";
$j = 0;
while($j < $scan_line_size) {
$b = $scan_line{$j++};
$g = $scan_line{$j++};
$r = $scan_line{$j++};
$gd_scan_line .= "\x00$r$g$b";
}
}
else if($bits == {
$gd_scan_line = $scan_line;
}
else if($bits == 4) {
$gd_scan_line = "";
$j = 0;
while($j < $scan_line_size) {
$byte = ord($scan_line{$j++});
$p1 = chr($byte >> 4);
$p2 = chr($byte & 0x0F);
$gd_scan_line .= "$p1$p2";
}
$gd_scan_line = substr($gd_scan_line, 0, $width);
}
else if($bits == 1) {
$gd_scan_line = "";
$j = 0;
while($j < $scan_line_size) {
$byte = ord($scan_line{$j++});
$p1 = chr((int) (($byte & 0x80) != 0));
$p2 = chr((int) (($byte & 0x40) != 0));
$p3 = chr((int) (($byte & 0x20) != 0));
$p4 = chr((int) (($byte & 0x10) != 0));
$p5 = chr((int) (($byte & 0x08) != 0));
$p6 = chr((int) (($byte & 0x04) != 0));
$p7 = chr((int) (($byte & 0x02) != 0));
$p8 = chr((int) (($byte & 0x01) != 0));
$gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8";
}
$gd_scan_line = substr($gd_scan_line, 0, $width);
}
fwrite($dest_f, $gd_scan_line);
}
fclose($src_f);
fclose($dest_f);
return true;
}
function imagecreatefrombmp($filename) {
$tmp_name = tempnam("tmp", "GD");
if(ConvertBMP2GD($filename, $tmp_name)) {
$img = imagecreatefromgd($tmp_name);
unlink($tmp_name);
return $img;
}
return false;
}
function mylog($msg) // 偶加的
{
$fp = fopen("mylog.txt", "a+");
echo $msg."\n";
fwrite($fp, $msg."\n");
fclose($fp);
}
$img = imagecreatefrombmp("test24bit.bmp");
if($img)
{
imagepng($img, "./test.png"); //原文是转成jpeg
}
?>
出处:
http://blog.sina.com.cn/s/blog_48d7f3f40100o6at.html
以下是吧bmp格式的图片裁剪成png格式:
<?php
function ConvertBMP2GD($src, $dest = false) {
if(!($src_f = fopen($src, "rb"))) {
return false;
}
if(!($dest_f = fopen($dest, "wb"))) {
return false;
}
$header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f, 14));
$info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", fread($src_f, 40));
extract($info);
extract($header);
if($type != 0x4D42) { // signature "BM"
return false;
}
$palette_size = $offset - 54;
$ncolor = $palette_size / 4;
$gd_header = "";
// true-color vs. palette
$gd_header .= ($palette_size == 0) ? "\xFF\xFE" : "\xFF\xFF";
$gd_header .= pack("n2", $width, $height);
$gd_header .= ($palette_size == 0) ? "\x01" : "\x00";
if($palette_size) {
$gd_header .= pack("n", $ncolor);
}
// no transparency
$gd_header .= "\xFF\xFF\xFF\xFF";
fwrite($dest_f, $gd_header);
if($palette_size) {
$palette = fread($src_f, $palette_size);
$gd_palette = "";
$j = 0;
while($j < $palette_size) {
$b = $palette{$j++};
$g = $palette{$j++};
$r = $palette{$j++};
$a = $palette{$j++};
$gd_palette .= "$r$g$b$a";
}
$gd_palette .= str_repeat("\x00\x00\x00\x00", 256 - $ncolor);
fwrite($dest_f, $gd_palette);
}
$scan_line_size = (($bits * $width) + 7) >> 3;
$scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03) : 0;
for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) {
// BMP stores scan lines starting from bottom
fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l));
$scan_line = fread($src_f, $scan_line_size);
if($bits == 24) {
$gd_scan_line = "";
$j = 0;
while($j < $scan_line_size) {
$b = $scan_line{$j++};
$g = $scan_line{$j++};
$r = $scan_line{$j++};
$gd_scan_line .= "\x00$r$g$b";
}
}
else if($bits == {
$gd_scan_line = $scan_line;
}
else if($bits == 4) {
$gd_scan_line = "";
$j = 0;
while($j < $scan_line_size) {
$byte = ord($scan_line{$j++});
$p1 = chr($byte >> 4);
$p2 = chr($byte & 0x0F);
$gd_scan_line .= "$p1$p2";
}
$gd_scan_line = substr($gd_scan_line, 0, $width);
}
else if($bits == 1) {
$gd_scan_line = "";
$j = 0;
while($j < $scan_line_size) {
$byte = ord($scan_line{$j++});
$p1 = chr((int) (($byte & 0x80) != 0));
$p2 = chr((int) (($byte & 0x40) != 0));
$p3 = chr((int) (($byte & 0x20) != 0));
$p4 = chr((int) (($byte & 0x10) != 0));
$p5 = chr((int) (($byte & 0x08) != 0));
$p6 = chr((int) (($byte & 0x04) != 0));
$p7 = chr((int) (($byte & 0x02) != 0));
$p8 = chr((int) (($byte & 0x01) != 0));
$gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8";
}
$gd_scan_line = substr($gd_scan_line, 0, $width);
}
fwrite($dest_f, $gd_scan_line);
}
fclose($src_f);
fclose($dest_f);
return true;
}
function imagecreatefrombmp($filename) {
$tmp_name = tempnam("tmp", "GD");
if(ConvertBMP2GD($filename, $tmp_name)) {
$img = imagecreatefromgd($tmp_name);
unlink($tmp_name);
return $img;
}
return false;
}
function mylog($msg) // 偶加的
{
$fp = fopen("mylog.txt", "a+");
echo $msg."\n";
fwrite($fp, $msg."\n");
fclose($fp);
}
$img = imagecreatefrombmp("test24bit.bmp");
if($img)
{
imagepng($img, "./test.png"); //原文是转成jpeg
}
?>
出处:
http://blog.sina.com.cn/s/blog_48d7f3f40100o6at.html
发表评论
-
workerman PHP socket 服务器框架
2015-12-17 14:25 856http://www.workerman.net/ wor ... -
CentOS6.5 下编译安装php-5.6.3.tar.gz
2015-09-15 15:54 2140一、安装相关依赖库 yum -y install gc ... -
php 添加mongodb扩展
2014-04-30 17:03 798PHP MongoDB 扩展安装 [root@a5139 ~] ... -
nginx添加php basic验证
2014-07-16 10:37 653几种方式: 1.命令 http://www.centos.b ... -
使用PHP 给网站 生成快照图片和缩略图
2012-06-07 10:21 2018使用PHP 给网站 生成快 ... -
HTML5 修改浏览器url而不刷新页面
2012-04-05 17:54 2298<?php if(!isset($_REQUEST['p ... -
使用Imagick来”resize” 和 “crop” GIF动画
2012-03-23 19:32 1568http://www.cnblogs.com/analyzer ... -
php 截取固定图片大小
2012-03-14 18:19 23971.创建iamge处理类 <?php include_ ... -
crontab执行不了php的解决方法
2012-03-12 18:26 3619用crontab跑php程序时,如 ... -
php mongodb 实现group 并按照某字段排序
2012-02-27 17:13 7761require_once ('../Config.class. ... -
php 国际化
2012-02-16 18:47 1442PHP的gettext用法 gettext ... -
php报错启动配置
2011-10-13 13:32 2222PHP 报错信息 2008年11月22 ...
相关推荐
PHP GD库虽然不直接支持BMP,但可以通过自定义函数来实现BMP到其他常见格式(如JPEG、PNG)的转换。一个常见的方法是使用`ImageCreateFromBMP`函数来创建图像资源,然后使用`imagejpeg`或`imagepng`将其转换并保存为...
webp2jpg-免费在线图片格式转化器, 可将jpeg、jpg、png、gif、 webp、svg、ico、bmp文件转化为jpeg、png、webp、webp动画、gif文件。 无需上传文件,本地即可完成转换! 源码特点: 无需上传,使用浏览器自身进行...
标题中的“图片格式转ICO程序+源码”指的是一个C#编写的程序,它的功能是将不同图片格式的文件转换成ICO图标格式。ICO是一种特殊的图像文件格式,常用于计算机软件的图标,因为它能适应不同的屏幕分辨率并显示清晰。...
软件介绍 可以将所有格式的图片转换成PHP代码,将图片转换成代码后直接拷贝代码到PHP网页的代码内,当浏览者浏览网页时同样可以看到真实的...也可以减少网站的使用空间,支持的图片格式:gif,jpg,jpeg,bmp,png,jpe,tiff
代码中的`switch`语句内部分为四个`case`,分别对应JPEG(jpg)、GIF(gif)、BMP(bmp)和PNG(png)图片格式的魔数。每个`case`语句下设定了对应图片类型的标识。 例如,JPEG图片的前两个字节是0xFFD8,所以在`...
【图片在线转Base64编码 v1.0】是一个基于PHP的工具,它能够将图片文件转换成Base64编码的字符串。...Base64编码是一种常见的数据编码方式,它将二进制...使用该工具,开发者可以快速实现对多种常见图片格式的编码处理。
在IT行业中,图片格式转换是一项常见的任务,尤其是将图片转换为通用且广泛支持的JPEG(JPG)格式。"图片转成jpg" 这个话题涉及到图像处理、文件格式转换和可能的Web服务操作。下面将详细介绍这个过程及相关知识点。...
描述中提到,这个工具能够将图片(如.png、.jpg、.jpeg、.gif、.bmp等常见格式)转换成"data:image/{type};base64"格式的字符串。这种格式是Base64编码在Web应用中的典型表现,其中"{type}"代表图像的原始格式,例如...
1. **读取图像**:首先,类库需要能够读取二维码图像文件,这通常是一个PNG、JPEG或BMP格式的图片。通过GD库或Imagick扩展,类库可以加载图像并准备进行分析。 2. **预处理**:图像可能需要进行一些预处理步骤,如...
在弹出的对话框中,选择保存位置,然后在"File type"(文件类型)下拉菜单中选择图片格式,例如JPEG、PNG或BMP,这些是常见的图片格式,可以广泛兼容不同的设备和平台。 调整图片质量以平衡文件大小和清晰度。较高...
BMP到PHPfont reformatter是一个开源项目,专门设计用于将BMP格式的图像文件转换成PHP中的`imageloadfont()`函数可以识别和使用的字体格式。这个工具对于那些希望自定义网页图形展示或者需要特殊字体效果的开发者来...
3. **图像插入**:除了文字,TCPDF 还允许开发者插入图像,如 JPEG、PNG、GIF、BMP 和 WMF 格式的图片。 4. **HTML 转换**:TCPDF 提供了将 HTML 代码转换为 PDF 的功能,这使得开发者可以直接利用现有的网页设计来...
GD库为PHP提供了创建和修改图像的能力,包括动态生成图像、处理JPEG、PNG、GIF、BMP等多种格式的图片。在Zabbix监控系统中,可能需要使用GD库来生成图表和图形,如性能指标的可视化展示,这些图表能够帮助管理员直观...
此库是基于ImageMagick的,因此它提供了广泛的功能,如创建、编辑和合成图像,以及支持多种格式,如JPEG、PNG、GIF、BMP等。在本文中,我们将深入探讨如何使用`Imagick`将PDF转换为PNG图片。 首先,确保您的PHP环境...
3. PHP中图片格式的支持:根据文件内容中的示例函数mkThumbnail,我们可以看到GD库支持多种图片格式的处理,包括gif、jpeg、png和bmp。 4. 图片缩放的基本规则:在生成缩略图时,通常要保持图片的宽高比不变,以...
1. 支持读取和写入JPEG图像文件,可以处理多种图像格式,如BMP、PNG、GIF等。 2. 提供丰富的图像处理功能,如旋转、缩放、裁剪等。 3. 可以进行色彩空间转换,例如从RGB到CMYK。 4. 支持元数据处理,如EXIF信息的...
ImageMagick和GraphicsMagick是两个非常重要的开源图像处理库,尤其在IT行业中,它们被广泛用于各种图像处理任务,包括但不限于图片格式转换、尺寸调整、裁剪、旋转、合成、添加文字水印等。这两个工具都提供了...
ImageMagick支持多种图像格式,包括常见的JPEG、PNG、GIF、BMP,以及专业领域的TIFF和PSD等。它还具备批处理能力,可以一次性处理大量图像文件。通过命令行界面或编程接口(API),用户可以调用一系列复杂的图像操作...
GD库支持多种图像格式,包括JPEG、PNG、GIF、BMP等,同时也支持基本的图形绘制功能,如线条、矩形、圆、文本等。在网页开发中,GD库常常被用来生成动态验证码、图像水印、缩略图等功能。 GD库的安装是PHP开发环境中...
FPDF的主要特点包括选择不同的页面格式和边距、管理页眉和页脚、自动分页、自动换行和文本对齐,以及支持JPEG、PNG和gif等图片格式。由于它的开源和免费特性,开发者可以根据自己的需求进行定制。 然而,随着时间的...