2012-02-18 42 views
4

我發現這個代碼,以獲得對JavaScript的圖像尺寸:從PHP的Javascript得到的圖像大小產生的圖像

function getImgSize(imgSrc) 
{ 
    var newImg = new Image(); 
    newImg.src = imgSrc; 
    var height = newImg.height; 
    var width = newImg.width; 
    alert ('The image size is '+width+'*'+height); 
} 

它完美,但我需要被保護的圖像的大小;爲了訪問圖像,我使用頁面image.php?id = IMAGE_ID,它的工作原理是,因爲在這個頁面中,我檢查權限並將圖像發送回去。但是當我把這個鏈接放在javascript函數中時,爲了獲得它的大小,它不起作用。任何幫助(如果我把圖像的直接鏈接,它既不工作也不工作,因爲它在.htaccess文件中被阻止)?

包含圖像的文件夾還包含一個.htaccess文件,該文件拒絕訪問進行翻轉。爲了獲得圖像,我用這個PHP頁面:

Image.php:

//check if the user has permission 
//if not, show a image with the text 'no permission' 
//if it's ok 
$filename = "images\\fotos\\" . $imgl; 
$image = imagecreatefromjpeg($filename); 
header('Content-type: image/jpeg'); 
imagejpeg($image, null, 100); 
imagedestroy($image); 
+0

您必須允許瀏覽器中打開'imgSrc',否則JS不能得到什麼,同樣,在真實服務器,你必須要考慮延遲以及 – 2012-02-18 11:30:44

+0

「受保護「如何?通過密碼對話框? – 2012-02-18 11:30:52

+0

它可能會檢查所需的cookie或會話變量。 – 2012-02-18 11:33:31

回答

2

正確的方式做,這就是:

var newImg = new Image(); 

newImg.onload = function() 
{ 
    var height = newImg.height; 
    var width = newImg.width; 
    alert ('The image size is '+width+'*'+height); 
}; 

newImg.src = imgSrc; 
+0

謝謝,我已經改變了我的代碼(問題仍然存在,但現在它只顯示大小,如果它成功地到達圖像)。 – 2012-02-18 12:00:11

+0

我找到了一種方法來處理你的代碼。不是返回值,而是無效,我將調整大小代碼(我需要原始大小的原因)直接放入onload函數中。只要圖像以原始大小加載,它就會調整爲除外大小。非常感謝你的回答。 – 2012-02-18 16:25:33

2

如果通過.htaccess進行封鎖,你不能做任何事情。這意味着在任何情況下都不能從服務器外部訪問。

您可以解決您編寫獲取圖片大小的特殊php文件的問題,然後您可以通過AJAX調用此文件。但是,這需要輔助服務器資源。

+0

他已經有一個特殊的PHP文件描述(除非他編輯的問題?) – 2012-02-18 11:32:09

+0

其實,這將工作。不過,我認爲在image.php文件中更改某些內容會更容易,以便讓js獲得圖像大小;我不明白爲什麼它不能。我將在文章中添加image.php代碼。 – 2012-02-18 11:52:14