文档章节

java 读取网络图片并设置指定尺寸写入

岁月静好I
 岁月静好I
发布于 2017/07/03 15:58
字数 294
阅读 44
收藏 0
package com.boya.util;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;

import static java.lang.System.out;

/**
 * Created by nrj on 2017/7/3.
 */
public class ImageUrlDow {


    //获取图片   写入图片
    public static void getDoc(String httpUrl,int imgWidth,int imgHeight) throws IOException{

        //定义一个写入的url
        File f = new File("E://imgs");
        if (!f.exists()){//如果没有此文件夹  就创建
            f.mkdirs();
        }
        //定义一个获取图片的http地址  获取http的内容   ignoreContentType就是忽略ContextType的检查
        Document document = Jsoup.connect(httpUrl).ignoreContentType(true).get();
        //获取后缀为png和jpg的图片的元素集合
        Elements imgs = document.select("img[src~=(?i)\\.(png|jpe?g)]");
        for (Element element:imgs){
            //获取到图片的地址
            String src = element.attr("src");
            //获取图片的后缀名字
            String imageName = src.substring(src.lastIndexOf("/"),src.length());
            //判断有没有http://请求头(百度没有) 要强制添加上
            Boolean s = src.contains("http");
            if (s == false){
                src = "http:"+src;
            }
            //连接url
            URL url = new URL(src);
            URLConnection uri = url.openConnection();
            //获取数据流
            InputStream inputStream = uri.getInputStream();
            //写入流
            OutputStream outputStream = new FileOutputStream(new File("E://imgs" ,imageName));

            Image img = ImageIO.read(inputStream);
            BufferedImage image = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_BGR);
            image.getGraphics().drawImage(img, 0, 0, imgWidth, imgHeight, null);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outputStream);
            encoder.encode(image);
            outputStream.flush();
            inputStream.close();
            outputStream.close();
        }

    }
    public static void main(String[] args) throws IOException{
        new ImageUrlDow().getDoc("https://www.baidu.com",300,180);
    }
}

© 著作权归作者所有

共有 人打赏支持
岁月静好I
粉丝 4
博文 21
码字总数 23746
作品 0
朝阳
程序员
私信 提问
第9章 文件IO操作、正则表达式与多线程

第9章 文件IO操作、正则表达式与多线程 我们在《第6章 扩展函数与属性》中已经介绍过Kotlin中的类扩展的特性。使用Kotlin的扩展函数功能,我们可以直接为 String 类实现一个 inc() 函数,这个...

程序员诗人
2017/10/18
0
0
基于AEAI ESB的处理大字段

1.背景 数据迁移中大字段一直是个比较头疼的问题,一旦大字段中值大于32K的话就无法用sql语句来实现插入和更新。通用的解决办法一般有两种:存储过程和JDBC。下面主要总结下基于AEAI ESB用J...

数通畅联
2015/01/22
0
0
Java NIO 系列教程 -- delete

(一) Java NIO 概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的A...

数据之美
2013/06/09
0
4
Kotlin入门(27)文件读写操作

Java的文件处理用到了io库java.io,该库虽然功能强大,但是与文件内容的交互还得通过输入输出流中转,致使文件读写操作颇为繁琐。因此,开发者通常得自己重新封装一个文件存取的工具类,以便...

aqi00
2018/10/21
0
0
Ant 中 *Log4j.properties 找不到文件的问题

在用 Ant 进行构建,部署,运行过程中,发现一小问题,就是在运行时总是提示“系统找不到指定的文件”。害得我花了不少时间,最后终于弄清楚了问题的原因。以下的错误代码(贴出来好让后面的...

xiaofer2008
2011/01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

百度黄埔学院将培养一批首席AI架构师,为“国之重器”赋能

深度学习高端人才不仅是AI发展的重要养分,也是企业转型AI巨大推动力。2019年1月19日,百度黄埔学院——深度学习架构师培养计划在百度科技园举行开学典礼,深度学习技术及应用国家工程实验室...

深度学习之桨
30分钟前
2
0
扒站wget仿站

wget -c -r -p -np -k http://xxx.com/xxx 其中: -c, --continue (断点续传) 接着下载没下载完的文件 -r, --recursive(递归) specify recursive download.(指定递归下载) -p, --page...

临江仙卜算子
32分钟前
2
0
Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
今天
0
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
3
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部