The following code demonstrates how to 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();
}
}