【发布时间】:2017-08-21 19:57:21
【问题描述】:
我正在为自定义解决方案创建一个策展插件。
当会员提供网址时,我会检索所有图片,然后我可以选择从此页面中选择图片。
我怎样才能只提供具有最小宽度的图像? (考虑到一些img标签没有width或height属性)
我应该解析每张图片吗? 或者有没有 Jsoup 的解决方案?
【问题讨论】:
我正在为自定义解决方案创建一个策展插件。
当会员提供网址时,我会检索所有图片,然后我可以选择从此页面中选择图片。
我怎样才能只提供具有最小宽度的图像? (考虑到一些img标签没有width或height属性)
我应该解析每张图片吗? 或者有没有 Jsoup 的解决方案?
【问题讨论】:
找到图像真实大小的唯一方法是检索它。即使 HTML 中有宽度/高度属性,它也可能与图像的实际尺寸不匹配。 JSoup 允许您在给定您正在解析的页面的基本 URL 的情况下获取图像的完整 URI。
【讨论】:
使用 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();
}
}
}
如果你只想要图像的属性,我们可以使用 Jsoup api,下面的代码 sn-p 描述了相同的:
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"));
}
【讨论】:
是的,您可以使用 ImageIO.read(new BufferedImage(new URL(YOUR URL))) 存储图像,提取其大小、高度、宽度并将其存储在文件中。
带有文件解析的 JSOUP 出现了。你可以这样使用 JSOUP !!! 看看,
【讨论】: