Home Backend Development PHP Tutorial PHP crop pictures and store them in mysql

PHP crop pictures and store them in mysql

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

When using PHP to process images, you often need to crop them. How to store cropped pictures into the mysql database is an interesting question. First, get the uploaded file:
$picFile = $_FILES["picFileName"];
$picType = $picFile["type"];  
$picData = file_get_contents($tempFile);  
Copy after login
If you don’t need to change the image size and store it directly in mysql, you can simply implement it as follows
$tempFile = $picFile["tmp_name"];  
$picData = base64_encode($picData);  

$query = "INSERT INTO image  
   (imgid, image, imgtype) 
   values( 
       null, 
       '$picData', 
       '$picType' 
    );"; 
$link->query($query);
Copy after login
But if you want to change the image size and get the image data in the form of a character stream, you need a little Tips:
First complete the cropping of the image and obtain the image object
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);  
}
Copy after login
After this step, newPicTemp is the resource type image data. Here comes the problem. Observe the code above. The type returned by file_get_contents is string, which is also the parameter type of base64_encode. How to convert resource to string type. After studying, I found that PHP has this function
string ob_get_contents ( void )
Copy after login
which returns the contents of the output buffer in the form of a string.
So, the idea is to output the resource image to the buffer, and then use an object to obtain its content. The code is as follows
ob_start(); //开启输出缓冲区  
imagejpeg($newPicTemp); //这个函数可以显示出图片,同时也是把数据输出  
$imgContent = ob_get_contents(); //获取字符流  
ob_end_clean();  //关闭并清除缓冲区  

$picData = base64_encode($imgContent); //不要忘记转码
Copy after login
In this way, you will get the image character stream after the size is changed, which can be stored in mysql
Finally destroy the temporary data
imagedestroy($src);  
imagedestroy($newPicTemp);
Copy after login
If you need to read and display the image, you can use the following code
$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;  
Copy after login
As you can see Several key functions contain the ob identifier. ob is output buffer, which is a very critical and useful tool in PHPRefer to php.net

The above introduces PHP to crop pictures and store them in mysql, including the relevant aspects. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to reorder multiple columns in Power Query via drag and drop How to reorder multiple columns in Power Query via drag and drop Mar 14, 2024 am 10:55 AM

In this article, we will show you how to reorder multiple columns in PowerQuery by dragging and dropping. Often, when importing data from various sources, columns may not be in the desired order. Reordering columns not only allows you to arrange them in a logical order that suits your analysis or reporting needs, it also improves the readability of your data and speeds up tasks such as filtering, sorting, and performing calculations. How to rearrange multiple columns in Excel? There are many ways to rearrange columns in Excel. You can simply select the column header and drag it to the desired location. However, this approach can become cumbersome when dealing with large tables with many columns. To rearrange columns more efficiently, you can use the enhanced query editor. Enhancing the query

React Query database plug-in: how to import and export data React Query database plug-in: how to import and export data Sep 26, 2023 pm 05:37 PM

ReactQuery database plug-in: Methods to implement data import and export, specific code examples are required. With the widespread application of ReactQuery in front-end development, more and more developers are beginning to use it to manage data. In actual development, we often need to export data to local files or import data from local files into the database. In order to implement these functions more conveniently, you can use the ReactQuery database plug-in. The ReactQuery database plugin provides a series of methods

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

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

How to split data to NTFS using Power Query How to split data to NTFS using Power Query Mar 15, 2024 am 11:00 AM

This article will introduce how to use PowerQuery to split data into rows. When exporting data from other systems or sources, it is common to encounter situations where the data is stored in cells combining multiple values. With PowerQuery, we can easily split such data into rows, making the data easier to process and analyze. This can happen if the user doesn't understand Excel's rules and accidentally enters multiple data into a cell, or if the data is not formatted correctly when copying/pasting it from other sources. Processing this data requires additional steps to extract and organize the information for analysis or reporting. How to split data in PowerQuery? PowerQuery transformations can be based on a variety of different factors such as word

React Query Database Plugin: Strategies for Data Backup and Restore React Query Database Plugin: Strategies for Data Backup and Restore Sep 28, 2023 pm 11:22 PM

ReactQuery database plug-in: Strategies to implement data backup and restoration, specific code examples are required Introduction: In modern web development, data backup and restoration is a very important task. Especially when using state management tools like ReactQuery, we need to ensure data security and reliability. This article will introduce a database plug-in based on ReactQuery to implement data backup and restore strategies, and provide specific code examples. ReactQu

React Query Database Plugin: Tips for Data Compression and Decompression React Query Database Plugin: Tips for Data Compression and Decompression Sep 26, 2023 pm 08:03 PM

ReactQuery database plugin: Tips for implementing data compression and decompression, specific code examples required Introduction: In modern web application development, processing large amounts of data queries is a common task. ReactQuery is a powerful library that provides a simple and intuitive way to manage data queries and state. Although ReactQuery itself is already very good, when dealing with large amounts of data, we may need to consider some additional tricks to improve performance and optimize storage space. This article will introduce

Query intent recognition based on knowledge enhancement and pre-trained large model Query intent recognition based on knowledge enhancement and pre-trained large model May 19, 2023 pm 02:01 PM

1. Background Introduction Enterprise digitalization is a hot topic in recent years. It refers to the use of new generation digital technologies such as artificial intelligence, big data, and cloud computing to change the business model of enterprises, thereby promoting new growth in enterprise business. Enterprise digitalization generally includes the digitalization of business operations and the digitalization of enterprise management. This sharing mainly introduces the digitalization of enterprise management level. Information digitization, simply put, means reading, writing, storing and transmitting information in a digital way. From the previous paper documents to the current electronic documents and online collaborative documents, information digitization has become the new normal in today's office. Currently, Alibaba uses DingTalk Documents and Yuque Documents for business collaboration, and the number of online documents has reached more than 20 million. In addition, many companies will internally

CES 2022: Schlage launches Encode Plus Deadbolt with Apple Home Key functionality CES 2022: Schlage launches Encode Plus Deadbolt with Apple Home Key functionality May 23, 2023 pm 06:55 PM

One of the Wallet features introduced in iOS 15 is support for the Home button, which will allow users to add a HomeKit door lock-compatible digital key to the Wallet app on iPhone and Apple Watch. With this system, users can quickly unlock their home using NFC connectivity simply by holding their device close to the lock. Schlage today launched the Schlage Encode Plus Smart WiFi Deadbolt, the first smart lock in North America to support Apple’s Home Key system. EncodePlus operates as a traditional "HomeKit" deadbolt and works over Wi-Fi, eliminating the need for a separate

See all articles