如何使用Jsoup检索图像宽度

时间:2012-01-03 15:37:32

标签: java jsoup

我正在为自定义解决方案创建一个curation插件。

当会员提供网址时,我会检索所有图片,然后我会选择从此页面中选择图片。

我怎么才能提供最小宽度的图像? (考虑到一些img标签没有宽度或高度属性)

我应该解析每张图片吗? 或者Jsoup有解决方案吗?

3 个答案:

答案 0 :(得分:2)

找到图像真实大小的唯一方法是检索它。即使HTML中存在宽度/高度属性,它也可能与图像的实际尺寸不匹配。 JSoup允许您在给定要解析的页面的基本URL的情况下获取图像的完整URI。

答案 1 :(得分:1)

是的,你可以使用ImageIO.read存储图像(新的BufferedImage(新的URL(你的URL))),提取它的大小,高度,宽度并将其存储在文件中。

这是带有File Parse的JSOUP。你可以用这种方式使用JSOUP! 看看,

http://jsoup.org/cookbook/input/load-document-from-file

答案 2 :(得分:1)

使用Jsoup我们只能获得为图像标签定义的宽度和高度属性,这些属性在给定像素的页面上显示图像,但不是图像的精确宽度和高度,我们可以使用ImageIO来获得精确的宽度和图像高度如下:

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

public Main{
    public static void main(String args[]){
        try {
            BufferedImage bimg = ImageIO.read(new URL("https://pictures.dealer.com/w/woodhouseomahaincfordfd/0027/a958ba95df26eaf392e298293da2847ex.jpg"));
            System.out.println(bimg.getWidth()+"==="+bimg.getHeight());
            bimg = ImageIO.read(new URL("https://pictures.dealer.com/ddc/resize/240x/quality/70/sharpen/1/ddc/w/woodhouseomahaincfordfd/0027/a958ba95df26eaf392e298293da2847ex.jpg"));
            System.out.println(bimg.getWidth()+"==="+bimg.getHeight());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

如果你只想要一个Image的属性,我们可以使用Jsoup api,下面的代码片段描述了相同的内容:

Elements images = document.select("img[src~=(?i)\\.(png|jpe?g|gif)]");
for (Element image : images) 
{
    System.out.println("height : " + image.attr("height"));
    System.out.println("width : " + image.attr("width"));
}