怎么在php项目中对图片进行二进制转换

发布时间:2020-12-15 16:33:40

来源:亿速云

阅读:79

作者:Leah

这篇文章将为大家详细讲解有关怎么在php项目中对图片进行二进制转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体实现方法如下:

html代码如下:

将图片保存到数据库,代码如下:<?php

//由于上传过来的图片被保存在一个临时文件中,所以

//我们仅需要读取该文件就可以获取传过来的图片

$fp = fopen($_FILES["myFile"]["tmp_name"],"rb");

$buf = addslashes(fread($fp,$_FILES["myFile"]["size"]));

//创建一个PDO对象

$dbh = new PDO("mysql:host=localhost;port=

3306;dbname=test", "root", "123456″);

//执行插入操作并将结果保存在一个变量中

$result = $dbh->query("INSERT INTO img (images) VALUES (‘$buf')");

//获取影响的行数

if ($result->rowCount() >0) {

echo("数据已插入。");

} else {

echo("不能执行插入操作。");

}

//显式的关闭PDO连接

$dbh = NULL;

?>

显示图片show.php,代码如下:<?php

$conn=@mysql_connect("localhost","root","123456″) or die("服务器连接错误!"); //链接数据库

@mysql_select_db("test",$conn) or die("未发现数据库!");

$query="select * from img where Id=".$_GET['id'];

$result=mysql_query($query);

$num=mysql_num_rows($result);

$data = mysql_result($result,0,"images");

header("Content-type: image/" . $num['imgType']);

echo $data;

?>

或者,代码如下:

补充:

1、fopen函数.

fopen()函数用于打开文件或者URL,语法如下:

int fopen(string filename, string mode);

字符串参数mode可以是下列的情形:

"r"开文件方式为只读,文件指针指到开始处.

"r+"开文件方式为可读写,文件指针指到开始处。

"w"开文件方式为写入,文件指针指到开始处,并将原文件的长度设为0。若文件不存在,则建立新文件。

"w+"开文件方式为可读写,文件指针指到开始处,并将原文件的长度设为0。若文件不存在,则建立新文件。

"a"开文件方式为写入,文件指针指到文件最后。若文件不存在,则建立新文件。

"a+"开文件方式为可读写,文件指针指到文件最后。若文件不存在,则建立新文件。

"b"若操作系统的文字及二进位文件不同,则可以用此参数,UNIX系统不需要使用本参数。

2、Addslashes函数

Addslashes函数用于将字符串加入斜线,语法如下,注:我测试的时候是把这个函数去掉后成功了,道理你懂的,自己试下就明白了.

string addslashes(string str);

该函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询(query)能顺利运作,这些会被改的字符包括单引号(')、双引号(")、反斜线backslash()以及空字符NULL(the null byte).

3、fread函数

fread函数用于读到指定长度的位组或到文件尾EOF,语法如下:

string fread(int fp, int length);可安全用于二进制文件

fread() 从文件指针 file 读取最多 length 个字节,该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况.

二进制转换成图片

注:$newFilePath 对生成的图片名和路径做处理,这里自己去实现,代码如下:

$newFilePath='1.jpg';

$data = $GLOBALS[HTTP_RAW_POST_DATA];//得到post过来的二进制原始数据

if(emptyempty($data)){

$data=file_get_contents("php://input");

}

$newFile = fopen($newFilePath,"w");//打开文件准备写入

fwrite($newFile,$data);//写入二进制流到文件

fclose($newFile);//关闭文件

可以把读取到的二进制流存到数据库,也可以直接写入成一个图片,获取二进制头文件,从而得知属于什么类型文件,代码如下:

$bin = substr($content,0,2);

$strInfo = @unpack("C2chars", $bin);

$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);

$fileType = '';

switch ($typeCode)

{

case 7790:

$fileType = 'exe';

break;

case 7784:

$fileType = 'midi';

break;

case 8297:

$fileType = 'rar';

break;

case 255216:

$fileType = 'jpg';

break;

case 7173:

$fileType = 'gif';

break;

case 6677:

$fileType = 'bmp';

break;

case 13780:

$fileType = 'png';

break;

default:

echo 'unknown';

}

关于怎么在php项目中对图片进行二进制转换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

php接口图片转二进制,怎么在php项目中对图片进行二进制转换相关推荐

  1. 二进制以上的计算机,计算机中的二进制

    计算机中的二进制 经常在有时候看到什么进制什么的 比如二进制 十六进制什么的..其实也没啥说白了 其实都是在表示一个数而已 只是表示的方式不一样罢了 先来看看十进制: 什么是十进制?也就是我们平时表示 ...

  2. jsp怎么从后台读取远程共享文件夹下的图片在前端显示_Vue后台项目中遇到的技术难点以及解决方案

    作者:yeyan1996 转发链接:https://juejin.im/post/5c76843af265da2ddd4a6dd0 写在前面 金三银四招聘时间已经过去,很多公司开启了今年第二轮招聘的热 ...

  3. 图片转icon图标并在项目中引用

    1.把图片转成svg https://convertio.co/zh/png-svg/ 2. 在阿里图标库新建项目并上传图片 https://www.iconfont.cn/ 3. 4.下载完成后,把 ...

  4. 支付宝接口调试完成后,接入本地项目中

    复制这段代码,然后粘贴到本地项目的Handler方法处 在pom.xml文件中导入依赖. <!--支付宝支付接口需要导入的依赖--><!-- https://mvnrepositor ...

  5. 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗

    作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...

  6. java抢购防止多次请求_springboot项目中接口防止恶意请求多次

    springboot项目中接口防止恶意请求多次 在项目中,接口的暴露在外面,很多人就会恶意多次快速请求,那我们开发的接口和服务器在这样的频率下的话,服务器和数据库很快会奔溃的,那我们该怎么防止接口防刷 ...

  7. web项目中图片上传

    最近一直在做一个项目,但是有好多的东西都是第一次碰到,上网上查了很多资料,但是由于基础薄弱,只是堪堪了解一点. 我所想实现的是,在后台页面上传图片,存放路径到数据库中,而前台页面通过数据库可以查到,然 ...

  8. android图片美化开源,GitHub - xingxing-yan/BLImage: Android中美化图片的库。功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能...

    BLImage Android中美化图片的库.功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能 效果图 添加依赖: 在project的build.gradle中添加: allp ...

  9. SpringBoot项目中可以上传图片,但图片加载失败

    目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: 最近有个Springboot项目的图片不显示 问题描述 在项目中,可以上传图片,但加载失败 系统运行正常: 在添加图片的位置中,可以选择 ...

最新文章

  1. 【Python】特征选择方法
  2. easyui js解析字符串_js相关:详解Jquery Easyui的验证扩展
  3. Android meta作用,Android中meta-data的使用
  4. 首次公开!《阿里计算机视觉技术精选》揭秘前沿落地案例
  5. c++ using 前置声明_详解C++ 前置声明
  6. 递归神经网络(Recursive Neural Network, RNN)
  7. python计算两张图像的L1和L2损失
  8. 排序算法之——归并排序分析
  9. 关于空间复杂度,你可能有几个疑问?
  10. 时间计算题100道_@所有考生,答应大家的政经10道计算题来了!
  11. 写给0-3岁产品经理的第1封信:《产品经理的经济基础——逻辑思维能力》
  12. git stash暂存操作
  13. 猫眼CEO郑志昊:为什么说产品思维已“死”?
  14. 【RPA自动化】selenium教程_元素定位及表格读取
  15. linux//常用命令
  16. py实现外星人入侵(二次开发)——3.随机生成外星人和方向
  17. 二维连续型随机变量及其分布
  18. 简单python画图
  19. win10下vs2013配置opencv2.4.11+测试代码
  20. hiho一下 第三周---KMP算法

热门文章

  1. 漫谈流式计算的一致性
  2. Scalable IO in Java
  3. arm-linux-gcc的安装
  4. oracle 创建用户、授权、表空间
  5. Oracle等待事件说明
  6. (原创)datagrid数据导出到excel文件给客户端下载的几种方法
  7. 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
  8. 关于JavaScript为何要限制跨域访问
  9. docker strace ptrace 报错 Operation not permitted 解决方法
  10. linux c rename 重命名文件和文件夹