Image和Base64 String之间的相互转换

本文介绍如何将图片转换为Base64字符串以及如何将Base64字符串还原为图片的方法。包括使用C#和Java实现的具体代码示例。

Image to Base64 String

 

public string ImageToBase64(Image image,
  System.Drawing.Imaging.ImageFormat format)
{
  using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray(); // Convert byte[] to Base64 String
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
  }
}

 

 

Base64 String to Image

public Image Base64ToImage(string base64String)
{
  // Convert Base64 String to byte[]
  byte[] imageBytes = Convert.FromBase64String(base64String);
  MemoryStream ms = new MemoryStream(imageBytes, 0, 
    imageBytes.Length);

  // Convert byte[] to Image
  ms.Write(imageBytes, 0, imageBytes.Length);
  Image image = Image.FromStream(ms, true);
  return image;
}
Use sun.misc Classes for Base64 Image Conversion
import java.io.*;
import java.awt.*;
import java.awt.event.*;

class Base64Example extends Frame implements ActionListener{

Image IMG=null;                        //image1
Image IMGdecode=null;                  //image2-result
TextArea TA=new TextArea();            //printing the Base64 form

Button B=new Button("Decoder");

byte[] buffer_code=new byte[1024];
byte[] buffer_decode;

boolean bool=false;

//constructorul
public Base64Example(String titlu)
    {
    super(titlu);
    }

void init()
    {
    Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
    setSize(550,460);
    setLocation(dim.width/2-275,dim.height/2-280);
    setLayout(null);
    setResizable(false);
    
    TA.setSize(300,390);
    TA.setLocation(10,60);
    add(TA);
    
    B.setSize(60,20);
    B.setLocation(250,35);
    B.addActionListener(this);
    add(B);
    
    Toolkit tk=Toolkit.getDefaultToolkit();
    IMG=tk.getImage(".//java.jpg");

    //load image1   
    MediaTracker mt=new MediaTracker(this);           
    mt.addImage(IMG,1);
    try {mt.waitForAll();}
                    catch(InterruptedException e)
                     {
                     System.out.println(e.getMessage());
                     };

    
    setVisible(true);
    
    //encode
    codeBase64(IMG);    
    }

private void codeBase64(Image i)
{
int cnt=0;
try{
   InputStream is = new BufferedInputStream( new FileInputStream(".//java.jpg")); 
   while((cnt=is.read(buffer_code))!=-1)
     {
     String s = new sun.misc.BASE64Encoder().encode(buffer_code); 
     TA.append(s+"/n"); 
     }
   }catch(IOException e){System.out.println(e.getMessage());}
}

//decode
private void decodeBase64(String sb)
{
try{
   buffer_decode=new sun.misc.BASE64Decoder().decodeBuffer(sb); 
   IMGdecode=Toolkit.getDefaultToolkit().createImage(buffer_decode);
   bool=true;
   repaint();
   }catch(IOException e)
      {System.out.println(e.getMessage());}
}

public void paint(Graphics g)
{
//drawing image1
g.drawImage(IMG,325,50,this);

//drawing same image but after decode
if(bool)g.drawImage(IMGdecode,325,240,this);

g.drawString("Before:",325,60);
g.drawString("After:",325,250);
g.drawString("Encode image:",10,55);
}

public void actionPerformed(ActionEvent e)
 {
 if(e.getActionCommand().equals("Decodare"))
    {
    //decode
    decodeBase64(TA.getText());
    }
 }
}

public class Base64{
public static void main(String[] args){
    Base64Example t=new Base64Example("Base64");   
    t.init();
    }
}

 

 

在C# MAUI中,将Image转换Base64字符串可以通过以下几个步骤实现: 1. **加载Image**:首先,需要加载你要转换Image文件。 2. **读取Image数据**:将Image文件读取为字节数组。 3. **转换Base64字符串**:使用`Convert.ToBase64String`方法将字节数组转换Base64字符串。 以下是一个示例代码,展示了如何实现这一过程: ```csharp using System; using System.IO; using System.Threading.Tasks; using Microsoft.Maui.Controls; public class ImageToBase64Converter { public static async Task<string> ConvertImageToBase64String(string imagePath) { if (!File.Exists(imagePath)) { throw new FileNotFoundException("Image file not found.", imagePath); } using (FileStream fs = File.OpenRead(imagePath)) { byte[] imageBytes = new byte[fs.Length]; await fs.ReadAsync(imageBytes, 0, (int)fs.Length); string base64String = Convert.ToBase64String(imageBytes); return base64String; } } } // 使用示例 public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); ConvertImageToBase64(); } private async void ConvertImageToBase64() { string imagePath = "path/to/your/image.png"; try { string base64String = await ImageToBase64Converter.ConvertImageToBase64String(imagePath); Console.WriteLine("Base64 String: " + base64String); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } } } ``` 在这个示例中,`ConvertImageToBase64String`方法接收一个图片路径作为参数,并返回该图片的Base64字符串。`MainPage`类中的`ConvertImageToBase64`方法展示了如何使用这个转换器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值