Jpg文件和Xml 文件格式的互换

本文介绍如何使用C#实现图片文件(JPG/PDF)与XML文件之间的相互转换,并提供了一个示例代码用于从BMP格式转换到JPG格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  // 把Jpg文件保存为Xml文件
             /*--------------------------------------------*/             
            
try
            
{
                XmlDocument myXmlDoc 
= new XmlDocument();
                myXmlDoc.LoadXml(
"<picture><name>picture</name></picture>");
                XmlElement elem 
= myXmlDoc.CreateElement("image");
                
// 打开图片文件,利用该图片构造一个文件流
                FileStream fs = new FileStream("e://C#.pdf",FileMode.Open);
                
// 使用文件流构造一个二进制读取器将基元数据读作二进制值
                BinaryReader br = new BinaryReader(fs);
                
byte[] imageBuffer = new byte[br.BaseStream.Length];
                br.Read(imageBuffer,
0,Convert.ToInt32(br.BaseStream.Length));
                
string textString = System.Convert.ToBase64String(imageBuffer);
                fs.Close();
                br.Close();
                XmlText text 
= myXmlDoc.CreateTextNode(textString);
                myXmlDoc.DocumentElement.AppendChild(elem);
                myXmlDoc.DocumentElement.LastChild.AppendChild(text);
                myXmlDoc.Save(
"e://docSave.xml"); 
                MessageBox.Show(
"读写结束!");
            }

            
catch  (Exception ex)
            
{
                MessageBox.Show(ex.ToString());

            }
        
            
/*--------------------------------------------*/
// 把XML文件保存为Jpg文件
             /*--------------------------------------------*/
            
try
            
{
                
int readByte = 0;
                
int bytesToRead = 1044;
                XmlTextReader xmlTxtRd 
= new XmlTextReader("e://docSave.xml");
                FileStream fs 
= new FileStream("e://002.pdf",FileMode.Create);
                BinaryWriter bw 
= new BinaryWriter(fs);
                
byte[] base64buffer = new byte[bytesToRead];
                
while(xmlTxtRd.Read())
                
{
                    
if (xmlTxtRd.NodeType == XmlNodeType.Element && xmlTxtRd.Name == "image")
                    
{
                        
do
                        
{
                            readByte 
= xmlTxtRd.ReadBase64(base64buffer,0,bytesToRead);
                            bw.Write(base64buffer,
0,readByte);
                        }

                        
while( bytesToRead<= readByte);
                    }

                }

                bw.Flush();
                bw.Close();
                fs.Close();
                xmlTxtRd.Close();
                MessageBox.Show(
"读写结束!");
            }

            
catch  (Exception ex)
            
{
                MessageBox.Show(ex.ToString());
            }

            
/*--------------------------------------------*/


转换内容 不仅仅限于Jpg  

 

using  System.IO;
using  System.Drawing.Imaging;

public   class  imgConvert
{
        
private void BMPToJPG(string bmpFileName,string jpgFileName)
        
{
                        
            
            System.Drawing.Image img;
            img
=ReturnPhoto(bmpFileName);
    
            img.Save(jpgFileName,ImageFormat.Jpeg);
        }


        
private Image ReturnPhoto(string bmpFileName)
        
{
            System.IO.FileStream stream ;
            stream
=File.OpenRead(bmpFileName);
            Bitmap bmp 
= new Bitmap(stream);
            System.Drawing.Image image 
= bmp;//得到原图
            
//创建指定大小的图
            System.Drawing.Image newImage = image.GetThumbnailImage(bmp.Width, bmp.Height, nullnew IntPtr());
            Graphics g
=Graphics.FromImage(newImage);
            g.DrawImage(newImage,
0,0, newImage.Width, newImage.Height); //将原图画到指定的图上
            g.Dispose();
            stream.Close();
            
return newImage;
        }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值