• 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;
    }

  • 相关阅读:
    PAAS平台的web应用性能测试与分析
    thrift之TTransport层的分帧传输类TFramedTransport
    thrift之TTransport层的缓存传输类TBufferedTransport和缓冲基类TBufferBase
    thrift之TTransport层的堵塞的套接字I/O传输类TSocket
    ssh证书登录(实例详解)
    [转]个性化推荐技术的十大挑战
    Github上最全的APICloud开源前端框架效果盘点(转)
    api.connectionType 判断当前网络技术经验
    安卓苹果获取时间戳转成本地时间
    js获取网络图片的宽和高
  • 原文地址:https://www.cnblogs.com/it38/p/5201052.html
Copyright © 2020-2023  润新知