美文网首页
Java对图片进行裁剪

Java对图片进行裁剪

作者: 王大豆 | 来源:发表于2020-06-22 11:49 被阅读0次

使用Java对图片裁剪是否重要

很重要!!!很重要!!!很重要!!!重要的事情要三次重复,不管你是开发文件服务,还是使用文件服务,都需要考虑要不要对图片进行裁剪。
为什么呢?

  1. 假设用户要上传一张很大的照片,我们的文件服务器是能储存,但是在网络传输中,一张大图很占网络资源的,一张图片要加载很久才能加载出来,这个时候把本来的大图裁剪成n张小图,那么网络就会先加载一部门的图片,这样用户在浏览的时候就不会要等很久才能看到想看的图片
  2. 这个时候有些开发者就会说,为什么不限制上传图片的大小呢,为什么你不用图片压缩工具去压缩呢?首先说一下,为什么不限制图片大小,限制图片大小有的时候当然是可行的,比如我就上传一个icon,上传一个二维码,但是如果要上传一张产品效果图,需要细节很清晰,这个时候限制肯定不行;那么图片压缩呢,一样的,本来我需要一张色彩保真的图片,你压缩一下,把我的色阶色温都变了,我还不如不传呢。

Java怎么实现压缩

    private static final Integer INIT_X = 0;

    private static final Integer INIT_Y = 0;

    private static final String FORMAT_NAME = "JPEG";

    private static final String DOT = "\\.";

    private static final String DOT_OF_FILE = ".";
public static void cutImageOfLocal(String srcPath, Integer limitHeight) {
        try {
            // 读取源图像
            BufferedImage bi = ImageIO.read(new File(srcPath));
            // 原图宽度
            int srcWidth = bi.getWidth();
            // 原图高度
            int srcHeight = bi.getHeight();
            // 算出图片要切除几份
            int count;
            if(limitHeight > srcHeight){
                count = 1;
            } else {
                if (srcHeight % limitHeight > 0) {
                    count = srcHeight / limitHeight + 1;
                }else {
                    count = srcHeight / limitHeight;
                }
            }
            if (count == 1) {
                return;
            } else {
                String[] pathItem = srcPath.split(DOT);
                for (int i = 0; i < count; i++) {
                    int y = INIT_Y + (i * limitHeight);
                    if (y + limitHeight >= srcHeight) {
                        limitHeight = srcHeight - y;
                    }
                    Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);
                    // 裁剪
                    ImageFilter cropFilter = new CropImageFilter(INIT_X, y , srcWidth, limitHeight);
                    // 使用裁剪下的部门创建一张图片
                    Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));
                    BufferedImage tag = new BufferedImage(srcWidth, limitHeight, BufferedImage.TYPE_INT_BGR);
                    // 用图像的画笔画出图像
                    Graphics g = tag.getGraphics();
                    g.drawImage(img, 0, 0, null);
                    g.dispose();
                    String descPath = pathItem[0] + (i + 1);
                    // 写到本地
                    ImageIO.write(tag, FORMAT_NAME, new File(descPath + DOT_OF_FILE + pathItem[1]));
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

上面就是裁剪本地的图片,分为n张
如果是网络资源,那么久要涉及到下载:

/**
     * 通过url下载图片
     * 
     * @param srcUrl 网络资源
     * @param path 路径
     */
    private static void downloadPicture(String srcUrl,String path) {
        URL url = null;
        try {
            url = new URL(srcUrl);
            DataInputStream dataInputStream = new DataInputStream(url.openStream());
            FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int length;
            while ((length = dataInputStream.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
            fileOutputStream.write(output.toByteArray());
            dataInputStream.close();
            fileOutputStream.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

相关文章

  • Java对图片进行裁剪

    使用Java对图片裁剪是否重要 很重要!!!很重要!!!很重要!!!重要的事情要三次重复,不管你是开发文件服务,还...

  • excel学习,带给你不一样的感受

    用excel对图片进行裁剪

  • ios 图片裁剪

    不改变原图片比例,对图片超出尺寸部分进行裁剪 下图为原图,上图为按比例裁剪

  • iOS 中对 GIF 的裁剪与展示

    GIF 裁剪过程可以大致分为三步 获取 GIF 的帧集合,并对每一帧图片进行裁剪后生成裁剪后的 UIImage 对...

  • iOS之图片裁剪、添加水印

    图片裁剪 第一种:获取图片原大小,按图片原大小裁剪图片(UIImage转化为CGImageRef进行裁剪) 第二种...

  • PS教程 不得不知的十大隐藏独门武器 PS工具

    1. 裁剪构图指南 当我们选择了裁剪工具,准备对图片进行裁剪的时候,PS小公举贴心地提供了“设置裁剪工具的叠加选项...

  • 10.重新构图-裁剪、旋转

    裁剪和旋转都是对图片进行重新构图的最基本操作。使用裁剪工具可以重新调整图片比例,去除照片中干扰物和多余的部分,突出...

  • ropper.js裁剪图片

    用户选择头像或者图片,需要进行裁剪,使用ropper.js croper.js 图片裁剪 Author:Wuxia...

  • iOS: 裁剪圆形图片

    1.通过对设置imageView中layer的圆角半径实现圆形图片 2.通过上下文对图片进行裁剪实现圆形图片

  • PS工具-裁剪/透视裁剪/切片

    裁剪/透视裁剪/切片工具 裁剪:可以按照矩形进行裁剪; 透视裁剪:可以将有透视效果的图片扶正,但要注意,透视线的边...

网友评论

      本文标题:Java对图片进行裁剪

      本文链接:https://www.haomeiwen.com/subject/kdlxfktx.html