這篇文章主要介紹“Java怎么實現圖像與聲音效果”,在日常操作中,相信很多人在Java怎么實現圖像與聲音效果問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java怎么實現圖像與聲音效果”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
成都創新互聯公司主營槐蔭網站建設的網絡公司,主營網站建設方案,重慶APP開發公司,槐蔭h5重慶小程序開發搭建,槐蔭網站營銷推廣歡迎槐蔭等地區企業咨詢與其它語言相比較,如果說Java對圖形和文本媒體的支持并不占明顯優勢的話,那么
Java對圖像與聲音媒體的支持真可謂是技高一籌,顯示圖像與播放聲音就如同顯示一行文
本一樣方便。同時,正由于在Java動畫中靈活的運用圖像和聲音媒體,才使得Web頁面更
具魅力。
4.2.1
圖像文件的顯示
正如上一節所介紹的,Graphics類中確實提供了不少繪制圖形的方法,但如果用它們
在applet運行過程中實時地繪制一幅較復雜的圖形(例如一條活潑可愛的小狗),就好比
是在用斧頭和木塊去制造航天飛機。因此,對于復雜圖形,大部分都事先用專用的繪圖軟
件繪制好,或者是用其它截取圖像的工具(如掃描儀、視效卡等)獲取圖像的數據信息,
再將它們按一定的格式存入圖像文件。applet運行時,只要找到圖像文件存貯的位置,將
它裝載到內存里,然后在適當的時機將它顯示在屏幕上就可以了。
1.
圖像文件的裝載
Java目前所支持的圖像文件格式只有兩種,它們分別是GIF和JPEG格式(帶有.GIF、
.JPG、.JPEG后綴名的文件)。因此若是其它格式的圖像文件,就先要將它們轉換為這兩
種格式。能轉換圖像格式的軟件有很多,如PhotoStyler等。
Applet類中提供了getImage(
)方法用來將準備好的圖像文件裝載到applet中,但我
們必須首先指明圖像文件所存貯的位置。由于Java語言是面向網絡應用的,因此文件的存
貯位置并不局限于本地機器的磁盤目錄,而大部分情況是直接存取網絡中Web服務器上的
圖像文件,因而,Java采用URL(Universal
Resource
Location,統一資源定位器)來定
位圖像文件的網絡位置。因此,Java專門提供了URL類來管理URL信息
表示一個URL信息可分為兩種形式:
一種稱為絕對URL形式,它指明了網絡資源的全路徑名。如:
絕對URL:“/tupian/20230522/
URL)再加上相對于基準URL下的
相對URL這兩部分組成,例如上面的例子可表示為:
基準URL:“/tupian/20230522/404.html
)方法的調用格式了:
Image getImage(URL url)
Image getImage(URL url, String
name)
我們可以發現,這兩種調用格式的返回值都是Image對象。確實,Java特別提供了
java.awt.Image類來管理與圖像文件有關的信息,因此執行與圖像文件有關的操作時不要
忘了import這個類。getImage(
)方法的第一種調用格式只需一個URL對象作為參數,這便
是絕對URL。而后一種格式則帶有兩個參數,第一個參數給出的URL對象是基準URL,第二
個參數是字符串類型,它描述了相對于基準URL下的路徑和文件名信息,因此這兩個參數
的內容綜合在一起就構成了一個絕對URL。例如,下面兩種寫法所返回的結果是一樣的:
Image
img=getImage(new
URL("/tupian/20230522/404.html
img=getImage(new
URL("/tupian/20230522/404.html
getDocumentBase( )
URL getCodeBase( )
其中getDocumentBase(
)方法返回的基準URL對象代表了包含該applet的HTML文件所
處的目錄,例如該文件存貯在"/tupian/20230522/
圖像文件的顯示
getImage(
)方法僅僅是將圖像文件從網絡上裝載進來,交由Image對象管理。那我們
怎樣把得到的Image對象中的圖像顯示在屏幕上呢?這又要回到我們的老朋友Graphics類
中來了,因為Graphics類提供了一個drawImage(
)方法,它能完成將Image對象中的圖像
顯示在屏幕的特定位置上,就象顯示文本一樣方便。drawImage(
)方法的調用格式如下:
boolean drawImage(Image img, int x, int y, ImageObserver
observer)
其中img參數就是要顯示的Image對象。x和y參數是該圖像左上角的坐標值。observer
參數則是一個ImageObserver接口(interface),它用來跟蹤圖像文件裝載是否已經完成
的情況,通常我們都將該參數置為this,即傳遞本對象的引用去實現這個接口。
除了將圖像文件照原樣輸出以外,drawImage(
)方法的另外一種調用格式還能指定圖
像顯示的區域大小:
boolean drawImage(Image img, int x,
int y, int width, int height, ImageObserver
observer)
這種格式比第一種格式多了兩個參數width和height,即表示圖像顯示的寬度和高度
。若實際圖像的寬度和高度與這兩個參數值不一樣時,Java系統會自動將它進行縮放,以
適合我們所定的矩形區域。
有時,我們為了不使圖像因縮放而變形失真,可以將原圖的寬和高均按相同的比例進
行縮小或放大。那么怎樣知道原圖的大小呢?只需調用Image類中的兩個方法就可以分別
得到原圖的寬度和高度。它們的調用格式如下:
int
getWidth(ImageObserver observer)
int getHeight(ImageObserver
observer)
同drawImage(
)方法一樣,我們通常用this作為observer的參數值。
下面的程序段給出了一個顯示圖像文件的例子,其顯示結果如圖4-14所示。
import
java.awt.Graphics;
import java.awt.Image;
public class Images
extends java.applet.Applet{
Image img;
public void
init(){
img=getImage(getCodeBase(),"man.gif");
}
public
void paint(Graphics g){
int w=img.getWidth(this);
int
h=img.getHeight(this);
g.drawImage(img,20,10,this);
//原圖
g.drawImage(img,200,10,w/2,h/2,this);
//縮小一半
g.drawImage(img,20,200,w*2,h/3,this);
//寬扁圖
g.drawImage(img,350,10,w/2,h*2,this);
//瘦高圖
}
}
圖4-14 顯示圖像文件
4.2.2
聲音文件的播放
對聲音媒體的直接支持可以說是Java的一大特色,尤其是在動畫中配上聲音效果,就
可以使人在視覺上和聽覺上均得到美的享受,那才叫過癮。Java中播放聲音文件與顯示圖
像文件一樣方便,同樣只需要先將聲音文件裝載進來,然后播放就行了。
Java目前支持的聲音文件只有一種格式,那就是SUN公司的AU格式(.AU文件),也稱
為u-law格式。由于AU格式的聲音僅有8KHz的采樣頻率且不支持立體聲效果,所以音質不
算太好。唯一的好處就是AU聲音文件的尺寸比其它格式小,有利于網上傳輸。一般,我們
較熟悉的大都是WAV格式的聲音文件,因此必須先將它們轉換為AU格式(可以選用Goldwave
軟件來進行這種格式轉換)。
聲音文件準備好以后,就可以考慮將它裝載進來并播放。在Applet類中提供的play(
)
方法可以將聲音文件的裝載與播放一并完成,其調用格式如下:
void play(URL url)
void
play(URL url, String name)
可見,play( )方法的調用格式與getImage(
)方法是完全一樣的,也采用URL來定位
聲音文件。例如,某聲音文件audio.au與applet文件存放在同一目錄下,可以這樣寫:
play(getCodeBase(
),"audio.au");
一旦play( )方法裝載了該聲音文件,就立即播放。如果找不到指定URL下的聲音文件
,play(
)方法不返回出錯信息,只是聽不到想聽的聲音而已。
由于play(
)方法只能將聲音播放一遍,若想循環播放某聲音作為背景音樂,就需要
用到功能更強大的AudioClip類,它能更有效地管理聲音的播放操作。因為它被定義在
java.applet程序包中,所以使用該類的話,不要忘了在程序頭部加上:
import
java.applet.AudioClip;
為了得到AudioClip對象,我們可以調用Applet類中的getAudioClip(
)方法。它能裝
載指定URL的聲音文件,并返回一個AudioClip對象,其調用格式如下:
AudioClip
getAudioClip(URL url)
AudioClip getAudioClip(URL url, String
name)
得到AudioClip對象以后,就可以調用AudioClip類中所提供的各種方法來操作其中的
聲音數據,這些方法如表4-4所示。
如果getAudioClip(
)方法沒有找到所指定的聲音文件,就會返回null值。所以,在
調用表4-4中所列的方法前,應該先檢查一下得到的AudioClip對象不是null,因為在null
對象上調用上述方法將導致出錯。
如果需要的話,我們還可以在applet中同時裝載幾個聲音文件來一起播放,到時候,
這些聲音將混合在一起,就象二重奏一樣。另外還有一點要說明的是,如果我們使用
AudioClip對象的loop(
)方法來重復播放背景音樂時,千萬不要忘記在適當的時候調用
AudioClip對象的stop(
)方法來結束放音,否則的話,即使用戶離開這一Web頁面,該聲
音也不會停止,這無疑將會惹惱用戶。因此,一般我們都在applet的stop(
)方法中添上
停止播放的代碼。
例如,下面這段程序將播放兩段聲音,一段是連續播放的背景音樂,另一段是講話錄
音。
import
java.applet.AudioClip;
public class Audios extends
java.applet.Applet{
AudioClip bgmusic,speak;
public void
init(){
bgmusic=getAudioClip(getDocumentBase(),"space.au");
speak=getAudioClip(getDocumentBase(),"intro.au");
}
public
void
start(){
if(bgmusic!=null)
bgmusic.loop();
if(speak!=null)
speak.play();
}
public
void stop(){
if(bgmusic!=null)
bgmusic.stop();
//關閉背景音樂,切記。
}
}
到此,關于“Java怎么實現圖像與聲音效果”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯-成都網站建設公司網站,小編會繼續努力為大家帶來更多實用的文章!
網站欄目:Java怎么實現圖像與聲音效果-創新互聯
轉載來于:http://vcdvsql.cn/article10/hoigo.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、企業建站、商城網站、用戶體驗、網站改版、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯