zoukankan      html  css  js  c++  java
  • 第12章 多媒体

      1 /*****************
      2 ***第12章 多媒体
      3 *******知识点:
      4 **************1.文字
      5 **************2.图像
      6 **************3.声音
      7 **************4.视频
      8 
      9 */
     10 
     11 //由于没讲GUI编程,故多媒体这章仅介绍基本使用
     12 
     13 /**1.文字**/
     14 //Graphics类:画笔类,用来绘画需要显示的项目到屏幕上
     15 /*
     16 import java.awt.Image;
     17 import java.awt.Graphics;
     18 import java.awt.*;
     19 
     20 
     21 
     22 public class test12_text extends java.applet.Applet{
     23     
     24     public void paint(Graphics g){
     25         g.setColor(Color.RED);//设置画笔颜色为红色
     26         
     27         g.drawLine(10,20,50,5);//在点(10,20)跟点(50,5)之间绘画一条线段
     28         g.drawRect(10,60,10,20);//在点(10,60)处绘画一个宽高为(10,20)的矩形  如果宽高一样即为正方形
     29         g.drawString("HelloWorld",50,20);//在点(10,80)处画一个字符串
     30         g.drawOval(70,30,50,100);//在点(70,30)出绘画非填充一个横轴为50,纵轴为100的椭圆  如果横轴等于纵轴即为圆
     31         
     32         g.fillOval(120,30,50,100);//在点(70,30)出绘画填充一个横轴为50,纵轴为100的椭圆  如果横轴等于纵轴即为圆
     33         
     34     }
     35 }
     36 更多应用详见API
     37 */
     38 
     39 /**2.图像**/
     40 //Java目前支持的图像格式为:gif和jpeg两种
     41 //提供处理图像的类为:java.awt.Image
     42 
     43 //URL类:用于定位文件的网络位置(也可以是本地),俗称统一资源定位器
     44 //1.获取文档目录————————getDocumentBase()
     45 //2.获取编码文件目录————getCodeBase()
     46 
     47 //调用Graphics类的drawImage( )方法,它能完成将Image对象中的图像显示在屏幕的特定位置
     48 //其中:drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)  
     49 //img需要绘画的对象,x和y参数是该图像左上角的坐标值,width和height是图像显示的宽度和高度,
     50 //observer参数则是一个ImageObserver接口(interface)
     51 
     52 /*
     53 import java.awt.Image;
     54 import java.awt.Graphics;
     55 
     56 
     57 public class test12_image extends java.applet.Applet{
     58     Image image;
     59     
     60     public void init(){
     61         image = getImage(getCodeBase(),"test.gif");
     62     }
     63     public void paint(Graphics g){
     64         int width = image.getWidth(this);
     65         int height = image.getHeight(this);
     66         g.drawImage(image,20,10,this);//原图
     67         g.drawImage(image,200,10,width/2,height/2,this);//缩小一半
     68         g.drawImage(image,280,10,width*2,height/2,this);//宽扁平
     69         g.drawImage(image,400,10,width/2,height*2,this);//高扁平
     70     }
     71 }
     72 
     73 //注意会产生闪烁
     74 //可用两种方法来减少闪烁(这里不具体演示了,需要用到时找度娘吧)
     75     一种是重载update()方法
     76     一种是使用双缓冲技术 
     77 //更多图片应用查看API文档  
     78 */
     79 
     80 
     81 /**3.声音**/
     82 /*
     83 Java目前支持的声音文件格式有:AU格式(.AU文件),也称为u-law格式,AIFF、WAV以及三种MIDI文件格式
     84                               (MIDI文件类型0、MIDI文件类型1,以及RMF)
     85 Java提供两种播放声音的机制:Applet类的play()方法及AudioClip的play()方法  
     86 1  Applet类的play()方法
     87     格式如下:
     88     void play(URL url)
     89     void play(URL url, String name) 
     90 2  AudioClip的play()方法
     91 
     92 AudioClip类,它能更有效地管理声音的播放操作 
     93 因为它被定义在java.applet程序包中,所以需要在程序头部加上:
     94  import java.applet.AudioClip;
     95     格式如下:
     96         AudioClip getAudioClip(URL url)
     97         AudioClip getAudioClip(URL url, String name)
     98   主要方法 
     99         loop()循环播放
    100         start()开始播放
    101         stop()停止播放
    102 */
    103 
    104 
    105 /**4.视频**/
    106 //使用JMF(Java Media Frame,简称JMF) 框架实现   //注意导入第三方库包
    107 /*
    108 import java.awt.BorderLayout;  
    109 import java.awt.Component;  
    110 import java.awt.Dimension;  
    111 import java.awt.Frame;  
    112 import java.awt.Panel;  
    113 import java.awt.event.WindowAdapter;  
    114 import java.awt.event.WindowEvent;  
    115 import java.io.IOException;  
    116 import java.net.MalformedURLException;  
    117 import java.net.URL;  
    118   
    119 import javax.media.CannotRealizeException;  
    120 import javax.media.ControllerEvent;  
    121 import javax.media.ControllerListener;  
    122 import javax.media.EndOfMediaEvent;  
    123 import javax.media.Manager;  
    124 import javax.media.MediaLocator;  
    125 import javax.media.NoPlayerException;  
    126 import javax.media.Player;  
    127 import javax.media.PrefetchCompleteEvent;  
    128 import javax.media.RealizeCompleteEvent;  
    129 import javax.media.Time;  
    130   
    131 @SuppressWarnings({ "restriction", "unused" })  
    132 public class test12_video implements ControllerListener {  
    133     public static void main(String[] args) {  
    134         test12_video sp = new test12_video();  
    135         sp.play();  
    136     }  
    137      
    138     private Player mediaPlayer;  
    139     private Frame f;  
    140     private Player player;  
    141     private Panel panel;  
    142     private Component visual;  
    143     private Component control = null;  
    144      
    145     public void play(){  
    146         f = new Frame("JMF Sample1");  
    147         f.addWindowListener(new WindowAdapter() {  
    148             public void windowClosing(WindowEvent we) {  
    149                 if(player != null) {  
    150                     player.close();  
    151                 }  
    152                 System.exit(0);  
    153             }  
    154         });  
    155         f.setSize(500,400);  
    156   
    157         f.setVisible(true);  
    158         URL url = null;  
    159         try {  
    160             //准备一个要播放的视频文件的URL  
    161             url = new URL("file:/d:/2.mpg");  
    162         } catch (MalformedURLException e) {  
    163             e.printStackTrace();  
    164         }         
    165         try {  
    166             //通过调用Manager的createPlayer方法来创建一个Player的对象  
    167             //这个对象是媒体播放的核心控制对象  
    168             player = Manager.createPlayer(url);  
    169         } catch (NoPlayerException e1) {  
    170             e1.printStackTrace();  
    171         } catch (IOException e1) {  
    172             e1.printStackTrace();  
    173         }   
    174   
    175         //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作  
    176         player.addControllerListener(this);  
    177          
    178         //让player对象进行相关的资源分配  
    179         player.realize();  
    180     }  
    181      
    182     private int videoWidth = 0;  
    183     private int videoHeight = 0;  
    184     private int controlHeight = 30;  
    185     private int insetWidth = 10;  
    186     private int insetHeight = 30;  
    187      
    188     //监听player的相关事件  
    189     public void controllerUpdate(ControllerEvent ce) {  
    190         if (ce instanceof RealizeCompleteEvent) {  
    191             //player实例化完成后进行player播放前预处理  
    192             player.prefetch();  
    193         } else if (ce instanceof PrefetchCompleteEvent) {  
    194             if (visual != null)  
    195                 return;  
    196   
    197             //取得player中的播放视频的组件,并得到视频窗口的大小  
    198             //然后把视频窗口的组件添加到Frame窗口中,  
    199             if ((visual = player.getVisualComponent()) != null) {  
    200                 Dimension size = visual.getPreferredSize();  
    201                 videoWidth = size.width;  
    202                 videoHeight = size.height;  
    203                 f.add(visual);  
    204             } else {  
    205                 videoWidth = 320;  
    206             }  
    207              
    208             //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中  
    209             if ((control = player.getControlPanelComponent()) != null) {  
    210                 controlHeight = control.getPreferredSize().height;  
    211                 f.add(control, BorderLayout.SOUTH);  
    212             }  
    213              
    214             //设定Frame窗口的大小,使得满足视频文件的默认大小  
    215             f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);  
    216             f.validate();  
    217              
    218             //启动视频播放组件开始播放  
    219             player.start();  
    220             mediaPlayer.start();  
    221         } else if (ce instanceof EndOfMediaEvent) {  
    222             //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放  
    223             player.setMediaTime(new Time(0));  
    224             player.start();  
    225         }  
    226     }  
    227   
    228 }  
    229 */
    230 
    231 
    232 //部分文档参考于博客:http://blog.csdn.net/a352193394/article/details/6875883
  • 相关阅读:
    Javascript、C#、php、asp、python 等语言的链式操作的实现
    根据C# 事件思想来实现 php 事件
    initerrlog: 无法打开错误日志文件 'D:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLLog 解决办法
    64位直接加载个img 标签的src
    各种脚本语言变量作用域总结
    数据库设计14个技巧【转】
    基于Jquery 简单实用的弹出提示框
    C# dll 事件执行 js 回调函数
    php 配置xdebug
    sqlserver 构架与性能优化
  • 原文地址:https://www.cnblogs.com/ciade/p/4772468.html
Copyright © 2011-2022 走看看