把图片保存到数据库中和从数据库中读取图片
最近做到一个小项目,其中关系到图片的一些操作。比如:将图片保存到数据库中、从数据库中读取图片、显示图片、打印图片等。此处对这些在项目中遇到的一些琐碎知识加以总结,以便日后查找。 1、将图片作为其中的一个参数保存到数据库中 在项目中,一般是将图
最近做到一个小项目,其中关系到图片的一些操作。比如:将图片保存到数据库中、从数据库中读取图片、显示图片、打印图片等。此处对这些在项目中遇到的一些琐碎知识加以总结,以便日后查找。
1、将图片作为其中的一个参数保存到数据库中
在项目中,一般是将图片转换成二进制流格式,然后保存到数据库中。同时数据库表中存储图片的格式一般为image。此次项目,是将图片作为一个参数,和其他几个参数一起保存到数据库中,和在网上搜索到的图片保存不太一样,此处稍作修改,但都是检测过的。
存储步骤:
1、搜索到图片的路径
2、读取图片并将图片转换成二进制流格式
3、sql语句保存到数据库中。
贴代码:
<span>private</span> <span>void</span> btnWrite_Click(<span>object</span><span> sender, EventArgs e) { OpenFileDialog ofd </span>= <span>new</span><span> OpenFileDialog(); ofd.Filter </span>= <span>"</span><span>*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP</span><span>"</span><span>; </span><span>if</span> (ofd.ShowDialog() ==<span> DialogResult.OK) { </span><span>string</span> filePath = ofd.FileName;<span>//</span><span>图片路径</span> FileStream fs = <span>new</span><span> FileStream(filePath, FileMode.Open); </span><span>byte</span>[] imageBytes = <span>new</span> <span>byte</span><span>[fs.Length]; BinaryReader br </span>= <span>new</span><span> BinaryReader(fs); imageBytes </span>= br.ReadBytes(Convert.ToInt32(fs.Length));<span>//</span><span>图片转换成二进制流</span> <span>string</span> strSql = <span>string</span>.Format(<span>"</span><span>insert into [SBS].[dbo].[Model] ([M_QRCode],[M_Skills] ) values (@image,'2')</span><span>"</span><span>); </span><span>int</span> count =<span> Write(strSql,imageBytes ); </span><span>if</span> (count > <span>0</span><span>) { MessageBox.Show(</span><span>"</span><span>success</span><span>"</span><span>); } </span><span>else</span><span> { MessageBox.Show(</span><span>"</span><span>failed</span><span>"</span><span>); } } }</span>
数据库连接和保存图片语句:
<span>private</span> <span>int</span> Write(<span>string</span> strSql,<span>byte</span><span>[] imageBytes) { </span><span>string</span> connStr = <span>"</span><span>Data Source=192.168.4.132;initial Catalog=SBS;User ID=sa;Password=sa;</span><span>"</span><span>; </span><span>using</span> (SqlConnection conn = <span>new</span><span> SqlConnection(connStr)) { </span><span>using</span> (SqlCommand cmd = <span>new</span><span> SqlCommand(strSql, conn)) { </span><span>try</span><span> { conn.Open(); SqlParameter sqlParameter </span>= <span>new</span> SqlParameter(<span>"</span><span>@image</span><span>"</span><span>, SqlDbType.Image); sqlParameter.Value </span>=<span> imageBytes; cmd.Parameters.Add(sqlParameter); </span><span>int</span> rows =<span> cmd.ExecuteNonQuery(); </span><span>return</span><span> rows; } </span><span>catch</span><span> (Exception e) { </span><span>throw</span><span>; } } } }</span>
2、从数据库总读取图片
从数据库中读取图片字段,并转换成内存流生成bitmap。
贴代码:
<span>private</span> <span>void</span> btnRead_Click(<span>object</span><span> sender, EventArgs e) { </span><span>string</span> strSql = <span>string</span>.Format(<span>"</span><span>select M_QRCode from [SBS].[dbo].[Model] where M_id = 7</span><span>"</span>);<span>//</span><span>图片保存的字段是M_QRCode</span> <span> Read(strSql); } </span><span>private</span> <span>void</span> Read(<span>string</span><span> strSql) { </span><span>string</span> connStr = <span>"</span><span>Data Source=192.168.4.132;initial Catalog=SBS;User ID=sa;Password=sa;</span><span>"</span><span>; </span><span>using</span> (SqlConnection conn = <span>new</span><span> SqlConnection(connStr)) { </span><span>using</span> (SqlCommand cmd = <span>new</span><span> SqlCommand(strSql, conn)) { conn.Open(); SqlDataReader sqlDr </span>=<span> cmd.ExecuteReader(); sqlDr.Read(); </span><span>byte</span>[] images = (<span>byte</span>[])sqlDr[<span>"</span><span>M_QRCode</span><span>"</span><span>]; MemoryStream ms </span>= <span>new</span><span> MemoryStream(images); Bitmap bmp </span>= <span>new</span><span> Bitmap(ms); pictureBox1.Image </span>=<span> bmp; } } }</span>
3、根据图片路径显示图片
这个比较简单,直接贴出代码
<span>private</span> <span>void</span> btnLoad_Click(<span>object</span><span> sender, EventArgs e) { OpenFileDialog ofd </span>= <span>new</span><span> OpenFileDialog(); ofd.Filter </span>= <span>"</span><span>*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP</span><span>"</span><span>; </span><span>if</span> (ofd.ShowDialog() ==<span> DialogResult.OK) { pictureBox1.Image </span>=<span> Image.FromFile(ofd.FileName); } }</span>
4、打印图片
打印图片是在将图片显示在pictureBox的基础上进行的。
步骤:
1、将printDocument控件拖到界面,添加打印代码
2、设置PrintDocument控件的Print_PrintPage事件
<span>private</span> <span>void</span> btnPrint_Click(<span>object</span><span> sender, EventArgs e) { PrintDialog printDialog </span>= <span>new</span><span> PrintDialog(); printDialog.Document </span>= <span>this</span><span>.printDocument1; </span><span>if</span> (printDialog.ShowDialog() ==<span> DialogResult.OK) { </span><span>try</span><span> { printDocument1.Print(); } </span><span>catch</span><span> (Exception ex) { printDocument1.PrintController.OnEndPrint(printDocument1, </span><span>new</span><span> System.Drawing.Printing.PrintEventArgs()); } } } </span><span>private</span> <span>void</span> printDocument1_PrintPage(<span>object</span><span> sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawImage(pictureBox1.Image, </span><span>30</span>, <span>30</span><span>); }</span>
附带着将图片转换成二进制和将二进制转换成图片专门写出来,以便于查看。
<span>public</span> <span>byte</span>[] ConvertBinary(<span>string</span><span> filePath) { FileStream fs </span>= <span>new</span> FileStream(filePath, FileMode.Open, FileAccess.Read);<span>//</span><span>以文件流形式读取图片</span> BinaryReader br = <span>new</span> BinaryReader(fs);<span>//</span><span>转换成二进制流</span> <span>byte</span>[] imageBytes = br.ReadBytes((<span>int</span>)fs.Length);<span>//</span><span>保存到字节数组中</span> <span>return</span><span> imageBytes; } </span><span>public</span> <span>void</span> ShowImage(<span>byte</span><span>[] imageBytes) { MemoryStream ms </span>= <span>new</span><span> MemoryStream(imageBytes); pictureBox1.Image </span>=<span> Image.FromStream(ms); }</span>
在pictureBox中显示图片的三种方式:
<span>public</span> <span>void</span><span> Method() { MemoryStream ms; pictureBox1.Image </span>=<span> Image.FromStream(ms); Bitmap bitmap; pictureBox1.Image </span>=<span> bitmap; </span><span>string</span><span> filePath; pictureBox1.Image </span>=<span> Image.FromFile(filePath); }</span>
winform中控件combobox控件使用:
<span>public</span> <span>void</span><span> BindCombobox() { DataTable dt </span>= <span>new</span><span> DataTable(); dt.Columns.Add(</span><span>new</span> DataColumn(<span>"</span><span>id</span><span>"</span>, <span>typeof</span>(<span>int</span><span>))); dt.Columns.Add(</span><span>new</span> DataColumn(<span>"</span><span>value</span><span>"</span>, <span>typeof</span>(<span>string</span><span>))); </span><span>for</span> (<span>int</span> i = <span>0</span>; i 3; i++<span>) { DataRow dr </span>=<span> dt.NewRow(); dr[</span><span>"</span><span>id</span><span>"</span>] =<span> i; dr[</span><span>"</span><span>value</span><span>"</span>] = <span>10</span> +<span> i; dt.Rows.Add(dr); } </span><span>this</span>.comboBox1.DataSource =<span> dt; </span><span>this</span>.comboBox1.DisplayMember = <span>"</span><span>value</span><span>"</span><span>; </span><span>this</span>.comboBox1.ValueMember = <span>"</span><span>id</span><span>"</span><span>; } </span><span>public</span> <span>void</span><span> ShowValue() { </span><span>this</span>.textBox1.Text = <span>this</span><span>.comboBox1.Text; </span><span>this</span>.textBox2.Text = <span>this</span><span>.comboBox1.SelectedValue.ToString(); }</span>
以上就是一些琐碎的总结,谨作为日后学习工作使用。

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds



1. Ouvrez l'application Douyin, recherchez la vidéo que vous souhaitez télécharger et enregistrer, puis cliquez sur le bouton [Partager] dans le coin inférieur droit. 2. Dans la fenêtre contextuelle qui apparaît, faites glisser les boutons de fonction de la deuxième rangée vers la droite, recherchez et cliquez sur [Enregistrer localement]. 3. Une nouvelle fenêtre contextuelle apparaîtra à ce moment-là et l'utilisateur pourra voir la progression du téléchargement de la vidéo et attendre la fin du téléchargement. 4. Une fois le téléchargement terminé, le message [Enregistré, veuillez accéder à l'album pour le visualiser] s'affichera, afin que la vidéo qui vient d'être téléchargée soit enregistrée avec succès dans l'album du téléphone mobile de l'utilisateur.

Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

1. Ouvrez la diapositive et insérez toutes les images. 2. Cliquez sur Outils d'image | Format | Disposition de l'image et sélectionnez le cluster hexagonal. 3. Tapez ensuite le contenu du texte dans la zone de texte à gauche. 4. Sélectionnez l'image et le système activera le menu de l'outil SmartArt. 5. Cliquez sur le menu Création, recherchez le jeu d'outils de style SmartArt, puis cliquez sur le bouton Modifier la couleur. 6. Sélectionnez la couleur souhaitée dans le menu déroulant des couleurs du thème contextuel. 7. L'effet une fois la conception terminée est celui indiqué dans la figure ci-dessous :

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.
