首頁 web前端 js教程 JavaScript使用三種方式實作修改圖像大小詳解

JavaScript使用三種方式實作修改圖像大小詳解

Jul 26, 2017 pm 01:57 PM
javascript js 實現

大家知道,豐富多彩的Web網路課件離不開圖片的支持,圖像在增加網頁生動性的同時,也增加了網頁的大小,使下載速度減慢。在網站中如何讓一張圖片能以適當大小在頁面上顯示是值得研究的問題。為此,筆者把自己的一些經驗寫出來供廣大從事腳本編寫者參考,以此共勉。

   需求分析:本網站採用新聞管理系統,首頁新聞欄位中,需要從資料庫中呼叫圖片檔案作為圖片新聞中的圖片,從而形成文字繞排形式。根據佈局需要,圖片的寬度不能超過200px。

   要讓圖片以適當大小顯示的問題,實質是一個大圖片等比例縮小的問題。如何透過圖像的URL獲得圖像的大小(width,height)是問題的關鍵,假設k=Width/Height表示圖像的比例值,當K>=1時,只要width不超過200px,則height一定<= 200px;相反K<1,只要Height不超過150Px,width一定<=150px(正常情況下width:height=4:3)。所以只要K>=1限定width,K<1限定height就可以了。

方案一:使用javascript的Image()物件動態載入圖片,取得圖片的高度和寬度。

<scriptlanguage="JavaScript" type="text/javascript">
<!--varimgObj;function checkImg(theURL){var width,height;var k;imgObj =new Image();    
//创建对象;
imgObj.src = theURL;   
if (typeof(imgObj) =="object"){if ((imgObj.width != 0) && (imgObj.height != 0)){width=imgObj.width; //是否已取得了图像的宽度;       
height=imgObj.height; 
//是否已取得了图像的高度;      
 k=width/height; 
 //获取图像比例值;        
 if(k>=1){         
 if (width>=200){          
 width=200;          
 height=width/k;         
 }}        
 else                
 {if (height>=200){          
 height=200;           
 width=k?height;           
 }          
 }
 showimg(theURL,width,height);       
 }   
 else    
 setTimeout("checkImg(&#39;" + theURL + "&#39;)", 100) 
 //通过Image对象动态装载图片,不可能立即得到图片的宽度和高度,所以每隔100毫秒重复调用检查。
 }
 }
 functionshowimg(theURL,x,y){document.write("<imgsrc="+theURL+""+"width="+x+""+"height="+y+"border=&#39;0&#39;"+""+"align=&#39;left&#39;>");}   //-->
 </script>
 <scriptlanguage="javascript">checkImg("Bt0085.jpg");
 </script>
登入後複製

  結果:將程式碼移植到首頁檔案(default.asp)中,然後通過伺服器測試的時候就出現了問題。輸入網址的時候,瀏覽器中先出現的是已經處理好後的圖片,點擊工具列上的「後退」才出現了首頁頁面內容。再次測試,結果正常。每次更新圖片的時候會出現同樣的現象,或是每開啟一台未造訪過本網站的電腦也會出現同樣問題。

   原因分析:Image()物件的特性,主要用來實現圖片翻滾效果,可以提前下載圖片到客戶端,讓圖片之間的切換沒有時間延遲。如下邊的程式碼一樣,使用 Image物件的 src 屬性來指定圖片的路徑 (URL),這樣就將 images 目錄下的圖片 pic2.gif 下載到客戶端了。 var myImg = newImage();myImg.src = "pic.gif";

    這段程式碼將迫使瀏覽器開始從伺服器下載指定的圖片,如果客戶端的快取(Cache)中有這個圖片的話,瀏覽器會自動將其覆寫。那樣,當使用者將滑鼠移到圖片上邊的時候,圖片將會立即變換,不會有時間的延遲。所以如果第一次顯示圖片後,第二次就能正常顯示首頁檔案就是這個原因了。由此,我得出不能用Image()物件取得影像的屬性這個結論,應該改變解決問題的方案。

方案二:使用中的ID,定義圖的寬度和高度

頁面的元素可以定義其顯示範圍,即圖的高度Height和寬度(Width)。處理事件觸發時,動態地改變圖的兩個屬性就可達到效果。

<script>
functionshow()   
{var w,h;   
var k;   
var con;  
w=smallslot.width;  
 h=smallslot.height;   
 k=w/h;  
 if(k>=1){         
 if (w>=200){           
 w=200;          
 h=w/k;         
 }}         
 else                
 {if(h>=150){           
 h=150;          
  w=k?h;          
  }           
  }       
  return w;
  }
  </script>
  <imgborder=0 ID="smallslot" src="4.jpg" onload="javascript:width=x;"align="left">
  <script languge="javascript">      
   varx=show();   
   </script>
登入後複製

在這段程式碼中,將處理後的影像的width作為show()函數的回傳值。在中用onload事件呼叫映像的Width。

   問題:首頁的圖片新聞圖片沒有顯示,點選網址列中的「轉到」按鈕,才能正常顯示。實踐告訴我又一次失敗!因為上網者惟一習慣做的是輸入網址、鍵入回車這兩個動作。在此基礎上,筆者做了以下嘗試:  (1)和之間加入“ 」。每隔10秒自動刷新螢幕,結果圖片能正常顯示,但不斷刷螢幕讓視覺很不舒服。  (2)window.location.reload()重新裝載頁面,可是結果是一直處於裝載頁面過程中,使網頁無法正確顯示。 (3),測試能夠通過,但如果圖像width< height,且width>200px,則頁面顯示效果為高度超過150。這樣如果沒有K=width或K=height的約束,頁面效果是不合理的,因此不能採用。

方案三:將中的Onload()事件放到中完成裝載頁面時事件的觸發

仔細分析方案二,筆者發現主要原因是onload事件是頁面載入時觸發的事件。 Onload在元素中使用,當IE解釋到此處,需裝載頁面才能觸發“javascript:width=x;”,因此要重新裝載頁面才能顯示圖片。另外,Onload()一般用在元素中,預先完成裝載頁面時觸發的事件。所以,我把中的Onload()事件放到了中去,程式碼如下:  

<body onload="window.smallslot.width=show();">
<script>       
function show()           
{…..
//show()       
}
</script>
<img border=0 ID="smallslot"src="1.jpg" align="left">
this is atest! 
登入後複製

 再次测试,通过了,而且首页调用成功!我成功了!  经过这次经历,让笔者感受到了从事程序开发工作的艰辛和乐趣!有时为了一个小小的问题折腾得茶饭不思,但成功的喜悦又让人溢于言表。任何事情只要自己能刻苦钻研、持之以恒,相信问题总会得到解决的。

以上是JavaScript使用三種方式實作修改圖像大小詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
建議:優秀JS開源人臉偵測辨識項目 建議:優秀JS開源人臉偵測辨識項目 Apr 03, 2024 am 11:55 AM

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

PHP程式設計指南:實作斐波那契數列的方法 PHP程式設計指南:實作斐波那契數列的方法 Mar 20, 2024 pm 04:54 PM

程式語言PHP是一種用於Web開發的強大工具,能夠支援多種不同的程式設計邏輯和演算法。其中,實作斐波那契數列是一個常見且經典的程式設計問題。在這篇文章中,將介紹如何使用PHP程式語言來實作斐波那契數列的方法,並附上具體的程式碼範例。斐波那契數列是一個數學上的序列,其定義如下:數列的第一個和第二個元素為1,從第三個元素開始,每個元素的值等於前兩個元素的和。數列的前幾元

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

掌握Golang如何實現遊戲開發的可能性 掌握Golang如何實現遊戲開發的可能性 Mar 16, 2024 pm 12:57 PM

在現今的軟體開發領域中,Golang(Go語言)作為一種高效、簡潔、並發性強的程式語言,越來越受到開發者的青睞。其豐富的標準庫和高效的並發特性使它成為遊戲開發領域的一個備受關注的選擇。本文將探討如何利用Golang來實現遊戲開發,並透過具體的程式碼範例來展示其強大的可能性。 1.Golang在遊戲開發中的優勢作為靜態類型語言,Golang正在建構大型遊戲系統

PHP遊戲需求實作指南 PHP遊戲需求實作指南 Mar 11, 2024 am 08:45 AM

PHP遊戲需求實現指南隨著網路的普及和發展,網頁遊戲的市場也越來越火爆。許多開發者希望利用PHP語言來開發自己的網頁遊戲,而實現遊戲需求是其中一個關鍵步驟。本文將介紹如何利用PHP語言來實現常見的遊戲需求,並提供具體的程式碼範例。 1.創造遊戲角色在網頁遊戲中,遊戲角色是非常重要的元素。我們需要定義遊戲角色的屬性,例如姓名、等級、經驗值等,並提供方法來操作這些

如何在Golang中實現精確除法運算 如何在Golang中實現精確除法運算 Feb 20, 2024 pm 10:51 PM

在Golang中實現精確除法運算是一個常見的需求,特別是在涉及金融計算或其它需要高精度計算的場景中。 Golang的內建的除法運算子「/」是針對浮點數計算的,並且有時會出現精度遺失的問題。為了解決這個問題,我們可以藉助第三方函式庫或自訂函數來實現精確除法運算。一種常見的方法是使用math/big套件中的Rat類型,它提供了分數的表示形式,可以用來實現精確的除法運算

js和vue的關係 js和vue的關係 Mar 11, 2024 pm 05:21 PM

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。

See all articles