基础知识 java 图片与string相互转换

来源:互联网 发布:数据与营销 编辑:程序博客网 时间:2024/06/07 15:54
import sun.misc.BASE64Decoder;import java.awt.*;import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.*;import java.nio.charset.StandardCharsets;import java.nio.file.Files;import java.nio.file.Paths;import java.util.Base64;import javax.imageio.ImageIO;import javax.swing.*;public class Main {    public static void main(String[] args) throws IOException{        BufferedImage image_buffer = ImageIO.read(new File("D:\\1.jpg"));        String string_image=imgToBase64String(image_buffer);        FileWriter fi = new FileWriter("D:\\1.txt");        fi.write(string_image);        fi.close();        String content = new String(Files.readAllBytes(Paths.get("D:\\1.txt")));        BufferedImage new_image_buffer=base64StringToImg(content);        draw_image(new_image_buffer);    }    //把图片转换成string类型    public static String imgToBase64String(final RenderedImage img) {        final ByteArrayOutputStream os = new ByteArrayOutputStream();        try {            ImageIO.write(img, "jpg", Base64.getEncoder().wrap(os));            return os.toString(StandardCharsets.ISO_8859_1.name());        } catch (final IOException ioe) {            throw new UncheckedIOException(ioe);        }    }    //把string类型转换成图片    public static BufferedImage base64StringToImg(final String base64String) {        try {            BASE64Decoder decoder = new BASE64Decoder();            byte[] bytes = decoder.decodeBuffer(base64String);            ByteArrayInputStream bais = new ByteArrayInputStream(bytes);            return ImageIO.read(bais);        } catch (final IOException ioe) {            throw new UncheckedIOException(ioe);        }    }    //绘制图片    public static  void draw_image(BufferedImage image_buffer) throws IOException {        ImageIcon icon = new ImageIcon(image_buffer);        JFrame frame = new JFrame();        frame.setLayout(new FlowLayout());        frame.setSize(image_buffer.getWidth(), image_buffer.getHeight());        JLabel lbl = new JLabel();        lbl.setIcon(icon);        frame.add(lbl);        frame.setVisible(true);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }}

原创粉丝点击