我有一个简单的基于标签的图库,可以将所有图像保存在数据库中。要显示这些图像,有一个小的PHP脚本
<?php
include_once("config/config.php");
$mysql_user = USER;
$password = PWD;
$database_host = HOST;
$database = DB;
mysql_connect($database_host, $mysql_user, $password) or die ("Unable to connect to DB server. Error: ".mysql_error());
mysql_select_db($database);
header('Content-type: image/jpeg');
$query = "SELECT imgblob from images where id=". intval($_GET["id"]);
$rs = mysql_fetch_array(mysql_query($query));
//echo mysql_error();
echo base64_decode($rs["imgblob"]);
?>
搜索后,有一个看起来像
的图像列表<a class="lightbox" href="showimage.php?id=1" title="" ><img src="showimage.php?id=1" /></a>
我使用灯箱在点击时调整图像大小。所以我需要获得图像源的大小(showimage.php?id = 1)。
我有以下代码段
$('a.lightbox').each(function() {
var img = $(this).children("img");
var theImage = new Image();
theImage.src = img.attr("src");
$(this).fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false,
'type' : 'iframe',
'width' : theImage.width + 20,
'height' : theImage.height + 20
});
});
这些功能不能一直工作。通常调整大小的图像非常小。我没有任何想法来修复它。
答案 0 :(得分:1)
您需要等到图像加载后才能获得图像大小。
var theImage = new Image();
$(theImage).load(function () {
$(this).fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false,
'type' : 'iframe',
'width' : theImage.width + 20,
'height' : theImage.height + 20
});
});
});
theImage.src = img.attr("src");
虽然坦率地说,我不明白你为什么要使用不同的Image
。试试这个:
$('a.lightbox').each(function() {
var $img = $(this).children("img");
$(this).fancybox({
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'speedIn': 600,
'speedOut': 200,
'overlayShow': false,
'type': 'iframe',
'width': $img.width() + 20,
'height': $img.height() + 20
});
});