javascript/jquery:根据大小从远程服务器加载图片

javascript/jquery:根据大小从远程服务器加载图片,javascript,jquery,image,Javascript,Jquery,Image,我有一个sraped图片URL数组(因此图片仍在删除服务器上)。我想做的是检查每张图片的尺寸,并在浏览器中只加载较大的图片(一定的宽度/高度)。 我想我必须先加载图片,然后再检查大小,但您如何实现这一点,即不是所有图片都显示,而是只显示较大的图片?这可能吗?假设您的数组是服务器端的,并且使用PHP 您可以使用php函数getimagesize()获取图像大小,该函数将返回一个数组,其中包含高度和宽度(以及一些其他元信息)。如果高度和宽度符合您的条件,您可以将它们添加到输出数组中,然后将其转换为j

我有一个sraped图片URL数组(因此图片仍在删除服务器上)。我想做的是检查每张图片的尺寸,并在浏览器中只加载较大的图片(一定的宽度/高度)。 我想我必须先加载图片,然后再检查大小,但您如何实现这一点,即不是所有图片都显示,而是只显示较大的图片?这可能吗?

假设您的数组是服务器端的,并且使用PHP 您可以使用php函数
getimagesize()
获取图像大小,该函数将返回一个数组,其中包含高度和宽度(以及一些其他元信息)。如果高度和宽度符合您的条件,您可以将它们添加到输出数组中,然后将其转换为json并发送回jQuery脚本

假设图像引用是Javascript 您必须实际加载图像以确定其尺寸。但是,它们不必是可见的。您可以使用
$.width()
方法检查它们的宽度,使用
$.height()
方法检查它们的高度。如果尺寸表示您的标准,请显示图像

$(function(){
  
  var images = ['image1.jpg', 'image2.jpg'];
  
  $(images).each(function(){
    // Create our Image
    currImage = document.createElement('img');
    // Add it and hide it
    $("body").append( $(currImage).attr('src', this).hide() );
    // Determine whether it should stay
    (currImage.width < 200) ? $(currImage).remove() : $(currImage).show() ;
  });
  
});
$(函数(){
var images=['image1.jpg','image2.jpg'];
$(图像)。每个(函数(){
//塑造我们的形象
currImage=document.createElement('img');
//添加并隐藏它
$(“body”).append($(currImage.attr('src',this.hide());
//决定它是否应该留下来
(currImage.width<200)?$(currImage.remove():$(currImage.show();
});
});
假设您的数组是服务器端的,并且使用PHP 您可以使用php函数
getimagesize()
获取图像大小,该函数将返回一个数组,其中包含高度和宽度(以及一些其他元信息)。如果高度和宽度符合您的条件,您可以将它们添加到输出数组中,然后将其转换为json并发送回jQuery脚本

假设图像引用是Javascript 您必须实际加载图像以确定其尺寸。但是,它们不必是可见的。您可以使用
$.width()
方法检查它们的宽度,使用
$.height()
方法检查它们的高度。如果尺寸表示您的标准,请显示图像

$(function(){
  
  var images = ['image1.jpg', 'image2.jpg'];
  
  $(images).each(function(){
    // Create our Image
    currImage = document.createElement('img');
    // Add it and hide it
    $("body").append( $(currImage).attr('src', this).hide() );
    // Determine whether it should stay
    (currImage.width < 200) ? $(currImage).remove() : $(currImage).show() ;
  });
  
});
$(函数(){
var images=['image1.jpg','image2.jpg'];
$(图像)。每个(函数(){
//塑造我们的形象
currImage=document.createElement('img');
//添加并隐藏它
$(“body”).append($(currImage.attr('src',this.hide());
//决定它是否应该留下来
(currImage.width<200)?$(currImage.remove():$(currImage.show();
});
});

另一种可能是创建新的
Image()
对象,并将其源设置为数组中的每个URL。将
onload
处理程序附加到图像并查询其大小,然后再决定是否将其注入文档体


我不相信在不从服务器检索全部图像的情况下,您能够可靠地完成这项工作,但您可能能够执行AJAX HEAD请求以获得图片文件大小,前提是所涉及的服务器会做出适当的响应。这将允许您过滤掉明显太小的图片。

另一种可能是创建新的
Image()
对象,并将其源设置为数组中的每个URL。将
onload
处理程序附加到图像并查询其大小,然后再决定是否将其注入文档体


我不相信在不从服务器检索全部图像的情况下,您能够可靠地完成这项工作,但您可能能够执行AJAX HEAD请求以获得图片文件大小,前提是所涉及的服务器会做出适当的响应。这将允许您过滤掉明显太小的图片。

您肯定需要首先加载所有图片,否则无法获得宽度/高度。但是,可以在实际显示尺寸之前检查尺寸:

var img = document.createElement('img');
img.onload = function() {
  if (img.width > ... && img.height > ...)
    document.getElementById('some_container').appendChild(img);
  else
    img = null;
};
img.src = 'filename.jpg';
// update as per @Orbling's comment:
if (img.complete)
  img.onload();

你肯定需要先把它们全部加载进去,否则无法得到宽度/高度。但是,可以在实际显示尺寸之前检查尺寸:

var img = document.createElement('img');
img.onload = function() {
  if (img.width > ... && img.height > ...)
    document.getElementById('some_container').appendChild(img);
  else
    img = null;
};
img.src = 'filename.jpg';
// update as per @Orbling's comment:
if (img.complete)
  img.onload();

我认为在获得图像后,你可以在它们上循环,得到每个图像的宽度和高度,然后你可以得到比其他图像更大的图像

这些问题和答案可能会帮助您:


我认为,在获得图像后,你可以在图像上循环,获得每个图像的宽度和高度,从而可以得到比其他图像更大的图像

这些问题和答案可能会帮助您:


执行此类操作的最佳方法是使用某种web服务,您可以查询该服务,以将图像大小(或者可能将预先排序的数组及其图像大小)返回到javascript


可以调用放置在图像目录中的PHP页面,用于扫描图像、按大小对数组进行排序,并将JSON、XML或HTML格式的数组返回到JS代码中进行显示。

执行此类操作的最佳方法是使用某种web服务,您可以通过查询找到图像大小(或者返回预先排序的数组及其图像大小)到javascript


可以调用图像目录中的PHP页面,用于扫描图像、按大小对数组进行排序,并将JSON、XML或HTML格式的数组返回到JS代码中进行显示。

URL数组是服务器端的,还是浏览器中的Javascript格式的?数组是服务器端的。在询问问题时,我计划将数组发送给客户端然后检查那里的图片,但是下面的回答让我想到,如果在服务器端加载和检查图片,并只将正确的图片发送到客户端,你会怎么做?(假设我说的是20张图片)URL数组是服务器端还是浏览器中的Javascript?数组是服务器端