我對我的服務顯示遠程圖像遠程圖像顯示的平滑處理,可能不再有
<img src="http://remote-site.com/imageX">
但是,有時圖像已經走了,所以我會得到404或只是一個普通的文本。
問題是 - >如果我得到的東西不是圖像類型,我該如何降級爲通用圖像?
實際的代碼,無論是在jQuery,Ruby等非常讚賞!
我對我的服務顯示遠程圖像遠程圖像顯示的平滑處理,可能不再有
<img src="http://remote-site.com/imageX">
但是,有時圖像已經走了,所以我會得到404或只是一個普通的文本。
問題是 - >如果我得到的東西不是圖像類型,我該如何降級爲通用圖像?
實際的代碼,無論是在jQuery,Ruby等非常讚賞!
當圖像因任何原因(連接錯誤,HTTP 404,不是圖像數據等)無法加載時,會觸發error
事件。一個非常簡單的嵌入式例子是
<img src="http://example.com/image.jpg" onerror="this.src = 'generic-image.png';" />
當然,如果你要正確地做到這一點,這樣做在jQuery的或另一個庫:
$("img.external").bind("error", function() { // assuming your external images have this CSS class
this.src = "generic-image.png";
});
如果你寫PHP,你可以使用:
<?= (file_exists('http://remote-site.com/imageX'))?'<img src="http://remote-site.com/imageX">':'<img src="http://remote-site.com/genericImage.png">' ?>
這將檢查圖像是否存在,並顯示一個您創建的通用圖像,如果不存在,則將其託管在某處。
我在應用程序中使用這個用戶圖像。如果他們沒有上傳圖片,則會顯示通用圖片。
這些圖像來自數據庫嗎?
這也是一個好主意。但是,這會試圖兩次檢索圖像 - >檢查一個,加載一個? – 2010-09-02 19:31:41
好問題,但不是,它實際上並未嘗試加載或檢索圖像,而只是檢查其存在。與命令行'dir'命令類似,它僅僅列出文件和文件夾,但實際上並沒有對它們做任何事情。 性能命中將是微不足道的,如果這是你的關注:) – d2burke 2010-09-02 19:37:10
嗯,我不存儲圖像的數據庫 - 它是遠程 所以它會擊中遠程服務器兩次?一個要檢查,一個要加載 – 2010-09-02 20:09:15
這看起來很不錯!我正在測試它使用 jQuery(「img」)。bind(「error」,function(){ alert(); }); 但事件似乎沒有觸發。我可能會做錯什麼? – 2010-09-02 18:26:41
@明明:圖片可能在您的活動附加之前加載。也許使用內聯方法(或者用JS設置src屬性)更好。 – 2010-09-02 19:02:28
工作!但是在任何需要的地方寫下它真的很痛苦(也很麻煩!)。我想知道在加載之前是否有附加的方法,比如說直播? – 2010-09-02 20:10:35