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