文档章节

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

岁月静好I
 岁月静好I
发布于 2017/07/03 15:58
字数 294
阅读 29
收藏 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
粉丝 3
博文 17
码字总数 20503
作品 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
《Kotin 极简教程》第15章 Kotlin 文件IO操作、正则表达式与多线程

第15章 Kotlin 文件IO操作与多线程 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎...

程序员诗人
2017/07/24
0
0
netty(六) ByteBuf学习.md

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lupeng/article/details/82750051 ByteBuf学习 基于Java Nio的网络通信,必须依赖于ByteBuffer,从程序实际上...

孤落
09/17
0
0
Tomcat的JVM提示内存溢出

一、Tomcat的JVM提示内存溢出 查看%TOMCAT_HOME%logs文件夹下,日志文件是否有内存溢出错误 二、修改Tomcat的JVM 1、错误提示:java.lang.OutOfMemoryError: Java heap space Tomcat默认可以...

彭登灏
2013/10/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

HashTable

Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射 Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口 Hashtable 的函数都是同步的,这意味着它是线...

职业搬砖20年
30分钟前
1
0
Linux系统状态查看命令1

10月23日任务 10.1 使用w查看系统负载 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令 查看系统负载 w命令 # 第一行:当前系统时间,系统启动时间,登录的用户,系统负载:1分钟...

robertt15
46分钟前
3
0
缓存那些事

前言 一般而言,现在互联网应用(网站或App)的整体流程,可以概括如图1所示,用户请求从界面(浏览器或App界面)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容...

Skqing
55分钟前
2
0
nginx开启stub_status模块配置方法

nginx开启stub_status模块配置方法 2017年12月13日 15:57:29 ly_dengle 阅读数:3765 标签: stub_statusnginxnginx开启stub_status模块 更多 个人分类: 软件工具php 版权声明:本文为博主原...

linjin200
今天
3
0
挑逗 Java 程序员的那些 Scala 绝技

有个问题一直困扰着 Scala 社区,为什么一些 Java 开发者将 Scala 捧到了天上,认为它是来自上帝之吻的完美语言;而另外一些 Java 开发者却对它望而却步,认为它过于复杂而难以理解。同样是 ...

joymufeng
今天
184
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部