Maison développement back-end tutoriel 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);  
Copier après la connexion
如果不需要更改图片大小而直接存入mysql,可以如下简单实现
$tempFile = $picFile["tmp_name"];  
$picData = base64_encode($picData);  

$query = "INSERT INTO image  
   (imgid, image, imgtype) 
   values( 
       null, 
       '$picData', 
       '$picType' 
    );"; 
$link->query($query);
Copier après la connexion
但如果要更改图片大小并以字符流的形式获得图片数据,则需要一点小技巧:
首先完成裁剪图片,获取图片对象
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);  
}
Copier après la connexion
这一步以后 newPicTemp 就是 resource 型的图片数据了,问题来了,观察上方代码,file_get_contents 返回的类型是 string,也是 base64_encode 的参数类型。 如何把 resource 转为 string 类型呢。 经过学习发现 PHP 有个这个函数
string ob_get_contents ( void )
Copier après la connexion
以字符串的形式返回输出缓冲区中的内容。
因此,思路就是把 resource 图片输出到缓冲区,然后用一个对象获取其内容。代码如下
ob_start(); //开启输出缓冲区  
imagejpeg($newPicTemp); //这个函数可以显示出图片,同时也是把数据输出  
$imgContent = ob_get_contents(); //获取字符流  
ob_end_clean();  //关闭并清除缓冲区  

$picData = base64_encode($imgContent); //不要忘记转码
Copier après la connexion
这样一来,就获得更改大小后的图片字符流了,可以存入mysql
最后销毁临时数据
imagedestroy($src);  
imagedestroy($newPicTemp);
Copier après la connexion
如果需要读取并显示图片,可以使用如下代码
$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;  
Copier après la connexion
可以看出几个关键函数都含有 ob 标识。 ob 即 output buffer,是 PHP 非常关键且有用的一项工具参考 php.net

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réorganiser plusieurs colonnes dans Power Query par glisser-déposer Comment réorganiser plusieurs colonnes dans Power Query par glisser-déposer Mar 14, 2024 am 10:55 AM

Dans cet article, nous allons vous montrer comment réorganiser plusieurs colonnes dans PowerQuery par glisser-déposer. Souvent, lors de l'importation de données provenant de diverses sources, les colonnes peuvent ne pas être dans l'ordre souhaité. La réorganisation des colonnes vous permet non seulement de les organiser dans un ordre logique adapté à vos besoins d'analyse ou de reporting, mais elle améliore également la lisibilité de vos données et accélère les tâches telles que le filtrage, le tri et l'exécution de calculs. Comment réorganiser plusieurs colonnes dans Excel ? Il existe de nombreuses façons de réorganiser les colonnes dans Excel. Vous pouvez simplement sélectionner l'en-tête de colonne et le faire glisser vers l'emplacement souhaité. Cependant, cette approche peut devenir fastidieuse lorsqu’il s’agit de grands tableaux comportant de nombreuses colonnes. Pour réorganiser les colonnes plus efficacement, vous pouvez utiliser l'éditeur de requête amélioré. Améliorer la requête

Plug-in de base de données React Query : comment importer et exporter des données Plug-in de base de données React Query : comment importer et exporter des données Sep 26, 2023 pm 05:37 PM

Plug-in de base de données ReactQuery : méthodes pour implémenter l'importation et l'exportation de données, des exemples de code spécifiques sont nécessaires. Avec l'application généralisée de ReactQuery dans le développement front-end, de plus en plus de développeurs commencent à l'utiliser pour gérer les données. Dans le développement réel, nous devons souvent exporter des données vers des fichiers locaux ou importer des données de fichiers locaux dans la base de données. Afin d'implémenter ces fonctions plus facilement, vous pouvez utiliser le plug-in de base de données ReactQuery. Le plugin de base de données ReactQuery fournit une série de méthodes

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

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

Comment diviser les données en NTFS à l'aide de Power Query Comment diviser les données en NTFS à l'aide de Power Query Mar 15, 2024 am 11:00 AM

Cet article explique comment utiliser PowerQuery pour diviser les données en lignes. Lors de l'exportation de données à partir d'autres systèmes ou sources, il est courant de rencontrer des situations dans lesquelles les données sont stockées dans des cellules combinant plusieurs valeurs. Avec PowerQuery, nous pouvons facilement diviser ces données en lignes, ce qui facilite leur traitement et leur analyse. Cela peut se produire si l'utilisateur ne comprend pas les règles d'Excel et saisit accidentellement plusieurs données dans une cellule, ou si les données ne sont pas formatées correctement lors d'un copier/coller à partir d'autres sources. Le traitement de ces données nécessite des étapes supplémentaires pour extraire et organiser les informations à des fins d'analyse ou de reporting. Comment diviser les données dans PowerQuery ? Les transformations PowerQuery peuvent être basées sur une variété de facteurs différents tels que le mot

Reconnaissance d'intention de requête basée sur l'amélioration des connaissances et un grand modèle pré-entraîné Reconnaissance d'intention de requête basée sur l'amélioration des connaissances et un grand modèle pré-entraîné May 19, 2023 pm 02:01 PM

1. Introduction générale La numérisation des entreprises est un sujet brûlant ces dernières années. Elle fait référence à l'utilisation de technologies numériques de nouvelle génération telles que l'intelligence artificielle, le big data et le cloud computing pour changer le modèle économique des entreprises, favorisant ainsi une nouvelle croissance de leur activité. . La numérisation des entreprises comprend généralement la numérisation des opérations commerciales et la numérisation de la gestion de l'entreprise. Ce partage introduit principalement la numérisation au niveau de la gestion de l'entreprise. La numérisation de l’information, en termes simples, signifie lire, écrire, stocker et transmettre des informations de manière numérique. Des anciens documents papier aux documents électroniques actuels et aux documents collaboratifs en ligne, la numérisation des informations est devenue la nouvelle norme dans les bureaux d'aujourd'hui. Actuellement, Alibaba utilise DingTalk Documents et Yuque Documents pour la collaboration commerciale, et le nombre de documents en ligne a atteint plus de 20 millions. De plus, de nombreuses entreprises

Plugin de base de données React Query : stratégies de sauvegarde et de restauration des données Plugin de base de données React Query : stratégies de sauvegarde et de restauration des données Sep 28, 2023 pm 11:22 PM

Plug-in de base de données ReactQuery : stratégies pour mettre en œuvre la sauvegarde et la restauration des données, des exemples de code spécifiques sont nécessaires Introduction : Dans le développement Web moderne, la sauvegarde et la restauration des données sont une tâche très importante. Surtout lorsque nous utilisons des outils de gestion d'état comme ReactQuery, nous devons garantir la sécurité et la fiabilité des données. Cet article présentera un plug-in de base de données basé sur ReactQuery pour mettre en œuvre des stratégies de sauvegarde et de restauration des données, et fournira des exemples de code spécifiques. RéagirQu

Plugin de base de données React Query : conseils pour la compression et la décompression des données Plugin de base de données React Query : conseils pour la compression et la décompression des données Sep 26, 2023 pm 08:03 PM

Plugin de base de données ReactQuery : conseils pour implémenter la compression et la décompression des données, exemples de code spécifiques requis Introduction : dans le développement d'applications Web modernes, le traitement de grandes quantités de requêtes de données est une tâche courante. ReactQuery est une bibliothèque puissante qui fournit un moyen simple et intuitif de gérer les requêtes et l'état des données. Bien que ReactQuery lui-même soit déjà très performant, lorsque nous traitons de grandes quantités de données, nous devrons peut-être envisager quelques astuces supplémentaires pour améliorer les performances et optimiser l'espace de stockage. Cet article présentera

CES 2022 : Schlage lance Encode Plus Deadbolt avec la fonctionnalité Apple Home Key CES 2022 : Schlage lance Encode Plus Deadbolt avec la fonctionnalité Apple Home Key May 23, 2023 pm 06:55 PM

L'une des fonctionnalités de Wallet introduites dans iOS 15 est la prise en charge du bouton Accueil, qui permettra aux utilisateurs d'ajouter une clé numérique compatible avec le verrouillage de porte HomeKit à l'application Wallet sur iPhone et Apple Watch. Avec ce système, les utilisateurs peuvent déverrouiller rapidement leur maison grâce à la connectivité NFC en tenant simplement leur appareil près de la serrure. Schlage a lancé aujourd'hui le pêne dormant Schlage Encode Plus Smart WiFi, la première serrure intelligente en Amérique du Nord à prendre en charge le système Home Key d'Apple. EncodePlus fonctionne comme un pêne dormant « HomeKit » traditionnel et fonctionne via Wi-Fi, éliminant ainsi le besoin d'un pêne dormant séparé.

See all articles