首页 后端开发 php教程 PHP裁剪图片并存入mysql

PHP裁剪图片并存入mysql

Aug 08, 2016 am 09:30 AM
encode query quot

使用 PHP 处理图片时,常常需要对其进行裁剪。如何将裁剪后的图片存入 mysql 数据库是一个有趣的问题。首先,获得上传后文件:
$picFile = $_FILES["picFileName"];
$picType = $picFile["type"];  
$picData = file_get_contents($tempFile);  
登录后复制
如果不需要更改图片大小而直接存入mysql,可以如下简单实现
$tempFile = $picFile["tmp_name"];  
$picData = base64_encode($picData);  

$query = "INSERT INTO image  
   (imgid, image, imgtype) 
   values( 
       null, 
       '$picData', 
       '$picType' 
    );"; 
$link->query($query);
登录后复制
但如果要更改图片大小并以字符流的形式获得图片数据,则需要一点小技巧:
首先完成裁剪图片,获取图片对象
list($picW, $picH) = getimagesize($tempFile);  
if($picW>600){ //超出大小  
    $src = imagecreatefromjpeg($tempFile); //获取原图数据  
    $nW =550;  
    $nH = $picH*$nW/$picW;  
    $newPicTemp = imagecreatetruecolor($nW,$nH);  //创建彩色图片对象  
    imagecopyresampled($newPicTemp,$src,0,0,0,0,$nW,$nH,$picW,$picH);  
}
登录后复制
这一步以后 newPicTemp 就是 resource 型的图片数据了,问题来了,观察上方代码,file_get_contents 返回的类型是 string,也是 base64_encode 的参数类型。 如何把 resource 转为 string 类型呢。 经过学习发现 PHP 有个这个函数
string ob_get_contents ( void )
登录后复制
以字符串的形式返回输出缓冲区中的内容。
因此,思路就是把 resource 图片输出到缓冲区,然后用一个对象获取其内容。代码如下
ob_start(); //开启输出缓冲区  
imagejpeg($newPicTemp); //这个函数可以显示出图片,同时也是把数据输出  
$imgContent = ob_get_contents(); //获取字符流  
ob_end_clean();  //关闭并清除缓冲区  

$picData = base64_encode($imgContent); //不要忘记转码
登录后复制
这样一来,就获得更改大小后的图片字符流了,可以存入mysql
最后销毁临时数据
imagedestroy($src);  
imagedestroy($newPicTemp);
登录后复制
如果需要读取并显示图片,可以使用如下代码
$query = "SELECT image, imgtype from image where imgid = $imgid ;";  
$result = $link->query($query);  
$row = mysqli_fetch_array($result);  
$data = base64_decode( $row["image"]);  
$type = $row["imgtype"];  
  
ob_clean();  
header("Content-Type:'$type'");  
echo $data;  
登录后复制
可以看出几个关键函数都含有 ob 标识。 ob 即 output buffer,是 PHP 非常关键且有用的一项工具参考 php.net

以上就介绍了PHP裁剪图片并存入mysql,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何通过拖放在Power Query中对多列进行重新排序 如何通过拖放在Power Query中对多列进行重新排序 Mar 14, 2024 am 10:55 AM

在这篇文章中,我们将向你展示如何通过拖放在PowerQuery中对多列进行重新排序。通常,从各种来源导入数据时,列可能不是所需的顺序。重新排序列不仅允许您按照符合您的分析或报告需求的逻辑顺序排列它们,还可以提高数据的可读性,并加快过滤、排序和执行计算等任务。如何在Excel中重新排列多个列?在Excel中,重新排列列的方法有多种。您可以简单地选择列标题,然后将其拖动到所需位置。但是,当处理包含许多列的大表时,这种方法可能会变得繁琐。为了更高效地重新排列列,您可以使用增强查询编辑器。通过增强查询编

React Query 数据库插件:实现数据导入和导出的方法 React Query 数据库插件:实现数据导入和导出的方法 Sep 26, 2023 pm 05:37 PM

ReactQuery数据库插件:实现数据导入和导出的方法,需要具体代码示例随着ReactQuery在前端开发中的广泛应用,越来越多的开发者开始使用它来管理数据。而在实际开发中,我们经常需要将数据导出到本地文件或从本地文件导入数据到数据库中。为了更方便地实现这些功能,可以使用ReactQuery数据库插件。ReactQuery数据库插件提供了一系列方

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

如何使用Power Query将数据拆分为NTFS 如何使用Power Query将数据拆分为NTFS Mar 15, 2024 am 11:00 AM

本文将介绍如何使用PowerQuery将数据进行行拆分。在从其他系统或源导出数据时,常常会遇到数据存储在单元格中组合多个值的情况。通过PowerQuery,我们可以轻松将这样的数据拆分成行,使得数据更易于处理和分析。若用户不了解Excel的规则并意外将多个数据输入到一个单元格,或者在从其他来源复制/粘贴数据时未正确格式化,就会出现这种情况。要处理这些数据,需要额外的步骤来提取和整理信息,以便进行分析或报告。如何在PowerQuery中拆分数据?PowerQuery转换可以根据各种不同因素(例如字

基于知识增强和预训练大模型的 Query 意图识别 基于知识增强和预训练大模型的 Query 意图识别 May 19, 2023 pm 02:01 PM

一、背景介绍企业数字化是近年来很热的一个话题,它是指运用人工智能、大数据、云计算等新一代数字技术,改变企业的业务模式,从而推动企业业务产生新的增长。企业数字化一般来说包括业务经营的数字化和企业管理的数字化。本次分享主要介绍企业管理层面的数字化。信息数字化,简单来说,就是把信息用数字化的方式进行读写、存储和传递。从以前的纸质文档到现在的电子文档以及在线协同文档,信息数字化已经变成了现在办公的新常态。目前阿里使用钉钉文档和语雀文档进行业务协同,在线文档数量已经达到了2000万以上。另外很多企业内部会

React Query 数据库插件:实现数据备份和还原的策略 React Query 数据库插件:实现数据备份和还原的策略 Sep 28, 2023 pm 11:22 PM

ReactQuery数据库插件:实现数据备份和还原的策略,需要具体代码示例引言:在现代的Web开发中,数据的备份和还原是非常重要的一项任务。特别是在使用ReactQuery这样的状态管理工具时,我们需要确保数据的安全性和可靠性。本文将介绍一种基于ReactQuery的数据库插件,用于实现数据备份和还原的策略,并提供具体的代码示例。ReactQu

React Query 数据库插件:实现数据压缩和解压缩的技巧 React Query 数据库插件:实现数据压缩和解压缩的技巧 Sep 26, 2023 pm 08:03 PM

ReactQuery数据库插件:实现数据压缩和解压缩的技巧,需要具体代码示例引言:在现代Web应用开发中,处理大量的数据查询是一项常见的任务。ReactQuery是一个强大的库,提供了简单、直观的方式来管理数据查询和状态。尽管ReactQuery本身已经非常优秀,但当处理大量数据时,我们可能需要考虑一些额外的技巧来提高性能和优化存储空间。本文将介绍

CES 2022:Schlage 推出支持 Apple Home Key 功能的 Encode Plus Deadbolt CES 2022:Schlage 推出支持 Apple Home Key 功能的 Encode Plus Deadbolt May 23, 2023 pm 06:55 PM

iOS15中引入的Wallet功能之一是对Home键的支持,这将允许用户将兼容HomeKit门锁的数字钥匙添加到iPhone和AppleWatch上的Wallet应用程序中。借助该系统,用户只需将设备靠近锁,即可利用NFC连接快速解锁他们的家。Schlage今天推出了SchlageEncodePlusSmartWiFiDeadbolt,这是北美第一款支持苹果家庭钥匙系统的智能锁。EncodePlus作为传统的“HomeKit”锁栓运行,通过Wi-Fi工作,无需单独的

See all articles