zoukankan      html  css  js  c++  java
  • image压缩

    public byte[] compressPic(byte[] data) {
    if(data.length == 0){
    return new byte[0];
    }
    Image img = null;
    try {
    img = ImageIO.read(new ByteArrayInputStream(data));
    //将图片流转成图片,以便获取宽和高
    BufferedImage imgs = toBufferedImage(img);
    int w = imgs.getWidth();
    int h = imgs.getHeight();
    if(w > 480 && h<=800){
    BufferedImage tag = new BufferedImage((int) 480, (int) h, BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(img.getScaledInstance(480, h, Image.SCALE_SMOOTH), 0, 0, null);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write( tag,"jpg",out);
    out.close();
    return out.toByteArray();
    }else if(w > 480 && h>800){
    BufferedImage tag = new BufferedImage((int) 480, (int) 800, BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(img.getScaledInstance(480, 800, Image.SCALE_SMOOTH), 0, 0, null);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write( tag,"jpg",out);
    out.close();
    return out.toByteArray();
    }else if(w <= 480 && h>800){
    BufferedImage tag = new BufferedImage((int) w, (int) 800, BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(img.getScaledInstance(w, 800, Image.SCALE_SMOOTH), 0, 0, null);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write( tag,"jpg",out);
    out.close();
    return out.toByteArray();
    }else{
    return data;
    }

    } catch (IOException e) {
    e.printStackTrace();
    }
    return data;
    }

    public BufferedImage toBufferedImage(Image image) {
    if (image instanceof BufferedImage) {
    return (BufferedImage)image;
    }
    image = new ImageIcon(image).getImage();
    BufferedImage bimage = null;
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    try {
    int transparency = Transparency.OPAQUE;
    GraphicsDevice gs = ge.getDefaultScreenDevice();
    GraphicsConfiguration gc = gs.getDefaultConfiguration();
    bimage = gc.createCompatibleImage(
    image.getWidth(null), image.getHeight(null), transparency);
    } catch (HeadlessException e) {
    }

    if (bimage == null) {
    int type = BufferedImage.TYPE_INT_RGB;
    bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
    }
    Graphics g = bimage.createGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();
    return bimage;
    }

  • 相关阅读:
    Logistic Regression
    如何把日期格式化为指定格式?
    JavaScript的自调用函数
    elementui 在原生方法参数里,添加参数
    原生js实现随着滚动条滚动,导航会自动切换的效果
    微信小程序-canvas绘制文字实现自动换行
    visual studio 和 sql server 的激活密钥序列号
    跨多个服务器访问不同数据库的表的方法
    数据库面试中常问的几个问题
    聚集索引和非聚集索引的区别
  • 原文地址:https://www.cnblogs.com/it38/p/5201052.html
Copyright © 2011-2022 走看看