文档章节

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

岁月静好I
 岁月静好I
发布于 2017/07/03 15:58
字数 294
阅读 17
收藏 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
朝阳
程序员
基于AEAI ESB的处理大字段

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

数通畅联
2015/01/22
0
0
Tomcat的JVM提示内存溢出

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

彭登灏
2013/10/05
0
0
Java NIO 系列教程 -- delete

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

数据之美
2013/06/09
0
4
Xms Xmx PermSize MaxPermSize 差异

Eclipse崩溃,错误提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is stronglyrecommended that you exit and restart My......

pczhangtl
2014/04/02
0
0
Java序列化(Serializable)与反序列化

简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供...

陶邦仁
2015/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
33分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
34分钟前
17
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
35分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
45分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部