Maison base de données tutoriel mysql 把图片保存到数据库中和从数据库中读取图片

把图片保存到数据库中和从数据库中读取图片

Jun 07, 2016 pm 02:59 PM
保存 图片 数据库 读取

最近做到一个小项目,其中关系到图片的一些操作。比如:将图片保存到数据库中、从数据库中读取图片、显示图片、打印图片等。此处对这些在项目中遇到的一些琐碎知识加以总结,以便日后查找。 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>
Copier après la connexion

  数据库连接和保存图片语句:

把图片保存到数据库中和从数据库中读取图片把图片保存到数据库中和从数据库中读取图片

<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>
Copier après la connexion
View Code

 

  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>
Copier après la connexion

 

  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>
Copier après la connexion

 

  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>
Copier après la connexion

  

  附带着将图片转换成二进制和将二进制转换成图片专门写出来,以便于查看。 

 <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>
Copier après la connexion

 

  在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>
Copier après la connexion

 

  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>
Copier après la connexion

 

  以上就是一些琐碎的总结,谨作为日后学习工作使用。

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

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 télécharger et enregistrer des vidéos Douyin Comment télécharger et enregistrer des vidéos Douyin Mar 29, 2024 pm 02:16 PM

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.

Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Mar 27, 2024 pm 09:39 PM

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.

Comment Hibernate implémente-t-il le mappage polymorphe ? Comment Hibernate implémente-t-il le mappage polymorphe ? Apr 17, 2024 pm 12:09 PM

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.

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

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

Une analyse approfondie de la façon dont HTML lit la base de données Une analyse approfondie de la façon dont HTML lit la base de données Apr 09, 2024 pm 12:36 PM

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.

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

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())

Comment insérer un cluster hexagonal de mise en page d'image dans PPT Comment insérer un cluster hexagonal de mise en page d'image dans PPT Mar 26, 2024 pm 05:10 PM

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 :

Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

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.

See all articles