多媒体技术实验报告.docx

上传人:b****6 文档编号:6390272 上传时间:2023-01-06 格式:DOCX 页数:34 大小:191.02KB
下载 相关 举报
多媒体技术实验报告.docx_第1页
第1页 / 共34页
多媒体技术实验报告.docx_第2页
第2页 / 共34页
多媒体技术实验报告.docx_第3页
第3页 / 共34页
多媒体技术实验报告.docx_第4页
第4页 / 共34页
多媒体技术实验报告.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

多媒体技术实验报告.docx

《多媒体技术实验报告.docx》由会员分享,可在线阅读,更多相关《多媒体技术实验报告.docx(34页珍藏版)》请在冰豆网上搜索。

多媒体技术实验报告.docx

多媒体技术实验报告

 

江苏科技大学

多媒体技术考核报告

(2017/2018学年第1学期)

 

课程名称:

多媒体技术

指导教师:

景国良

实验地点:

东校区外训楼软件工程实验室

学生姓名:

谢卉

学生学号:

1477965899

院系:

计算机学院

专业:

计算机科学与技术专业

考核得分:

 

2017年11月日

实验一多媒体图像文件转换

一、实验目的

1.掌握多媒体静态图像的基本概念,技术和获取过程。

2.掌握多媒体图像文件基本格式种类。

3.掌握不同图像文件的数据结构形式,了解不同格式图像文件的具体类型区别。

4.运用高级语言编程实现不同图像文件类型的相互转换。

二、实验环境

1、主流操作系统;

2、高级语言编程环境。

三、实验内容

1、编写程序实现主流图像文件格式之间的相互转换;

2、至少要实现JPG、BMP、GIF、PNG图像文件之间的转换;

3、编程语言不限;

4、根据实验内容撰写对应的实验报告。

四、设计方案

ImageIO类的静态方法可以执行许多常见的图像I/O操作。

此包包含一些基本类和接口,有的用来描述图像文件内容(包括元数据和缩略图)(IIOImage);有的用来控制图像读取过程(ImageReader、ImageReadParam和ImageTypeSpecifier)和控制图像写入过程(ImageWriter和ImageWriteParam);还有的用来执行格式之间的代码转换(ImageTranscoder)和报告错误(IIOException)。

可处理图像格式有:

jpg,BMP,bmp,JPG,wbmp,jpeg,png,PNG,JPEG,WBMP,GIF,gif。

另外在加一些输入代码可实现简单的格式转换选择。

五、实验代码

importjavax.imageio.ImageIO;

importjava.awt.image.BufferedImage;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.OutputStream;

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannerscan=newScanner(System.in);

System.out.println("请输入需要转换的格式[jpg,bmp,png,gif]:

");

Fileout=newFile("/Users/14779/Desktop/1.jpg");

//将图片写入ImageIO流

try{

BufferedImageimg=ImageIO.read(out);

//将图片写出到指定位置(复制图片)

switch(scan.next()){

case"png":

case"PNG":

OutputStreamops=newFileOutputStream(newFile("/Users/14779/Desktop/1

(1).png"));

ImageIO.write(img,"png",ops);

System.out.println("转换完成!

");

break;

case"jpg":

case"JPG":

ops=newFileOutputStream(newFile("/Users/14779/Desktop/1

(1).jpg"));

ImageIO.write(img,"jpg",ops);

System.out.println("转换完成!

");

break;

case"bmp":

case"BMP":

ops=newFileOutputStream(newFile("/Users/14779/Desktop/1

(1).bmp"));

ImageIO.write(img,"bmp",ops);

System.out.println("转换完成!

");

break;

case"GIF":

case"gif":

ops=newFileOutputStream(newFile("/Users/14779/Desktop/1

(1).gif"));

ImageIO.write(img,"gif",ops);

System.out.println("转换完成!

");

break;

default:

System.out.println("请输入正确格式!

");

break;

}

}catch(IOExceptione){

e.printStackTrace();

}

}

}

实验截图

 

六、实验过程中的问题及对应思考

ImageIO是一个封装好的图像输入输出类,使用ImageIO类的静态方法可以执行许多常见的图像I/O操作。

我将图片路径事先写好放入程序里,可以通过键入转换格式来达到想要转换到的格式,为了避免键入出错,我将主程序写在try函数中。

 

实验二多媒体图像文件压缩

一、实验目的

1、了解各种图像文件格式之间的存储方法和方式,了解其编码的组织方式;

2、掌握运用高级编程语言编写多媒体应用程序的方法;

3、运用高级编程语言实现对多媒体图像文件的压缩的方法。

二、实验环境

1、主流操作系统;

2、高级语言编程环境。

三、实验内容

1、使用高级编程语言编写良好的运行界面;

2、运用高级编程语言编写核心代码实现对图像文件的压缩;

3、了解压缩过程中的顺进和累进方法的运用提高压缩比;

4、合理的考虑压缩算法压缩和解压的速度平衡;

5、编程语言不限;

6、根据实验内容撰写对应的实验报告。

四、设计方案

使用imagioIO的对图片的压缩处理来进行此项实验。

五、实验代码

package.company;

importjavax.imageio.ImageIO;

importjava.awt.*;

importjava.awt.image.BufferedImage;

importjava.io.File;

importjava.io.IOException;

publicclassMain{

publicstaticvoidmain(String[]args){

CompressPicDemomypic=newCompressPicDemo();

System.out.println("输入的图片大小:

"+mypic.getPicSize("C:

\\Users\\14779\\Desktop\\2.jpg")/1024+"KB");

pressPic("C:

\\Users\\14779\\Desktop","C:

\\Users\\14779\\Desktop","2.jpg","2

(2).jpg",120,120,false);

}

}

classCompressPicDemo{

privateFilefile=null;//文件对象

privateStringinputDir;//输入图路径

privateStringoutputDir;//输出图路径

privateStringinputFileName;//输入图文件名

privateStringoutputFileName;//输出图文件名

privateintoutputWidth=100;//默认输出图片宽

privateintoutputHeight=100;//默认输出图片高

privatebooleanproportion=true;//是否等比缩放标记(默认为等比缩放)

publicCompressPicDemo(){//初始化变量

inputDir="";

outputDir="";

inputFileName="";

outputFileName="";

outputWidth=100;

outputHeight=100;

}

publicvoidsetInputDir(StringinputDir){

this.inputDir=inputDir;

}

publicvoidsetOutputDir(StringoutputDir){

this.outputDir=outputDir;

}

publicvoidsetInputFileName(StringinputFileName){

this.inputFileName=inputFileName;

}

publicvoidsetOutputFileName(StringoutputFileName){

this.outputFileName=outputFileName;

}

publicvoidsetOutputWidth(intoutputWidth){

this.outputWidth=outputWidth;

}

publicvoidsetOutputHeight(intoutputHeight){

this.outputHeight=outputHeight;

}

publicvoidsetWidthAndHeight(intwidth,intheight){

this.outputWidth=width;

this.outputHeight=height;

}

/*

*获得图片大小

*传入参数Stringpath:

图片路径

*/

publiclonggetPicSize(Stringpath){

file=newFile(path);

returnfile.length();

}

//图片处理

publicStringcompressPic(){

try{

//获得源文件

file=newFile(inputDir+inputFileName);

if(!

file.exists()){

return"";

}

Imageimg=ImageIO.read(file);

//判断图片格式是否正确

if(img.getWidth(null)==-1){

System.out.println("can'tread,retry!

"+"
");

return"no";

}else{

intnewWidth;intnewHeight;

//判断是否是等比缩放

if(this.proportion==true){

//为等比缩放计算输出的图片宽度及高度

doublerate1=((double)img.getWidth(null))/(double)outputWidth+0.1;

doublerate2=((double)img.getHeight(null))/(double)outputHeight+0.1;

//根据缩放比率大的进行缩放控制

doublerate=rate1>rate2?

rate1:

rate2;

newWidth=(int)(((double)img.getWidth(null))/rate);

newHeight=(int)(((double)img.getHeight(null))/rate);

}else{

newWidth=img.getWidth(null);//输出的图片宽度

newHeight=img.getHeight(null);//输出的图片高度

}

BufferedImagetag=newBufferedImage((int)newWidth,(int)newHeight,BufferedImage.TYPE_INT_RGB);

/*

*Image.SCALE_SMOOTH的缩略算法生成缩略图片的平滑度的

*优先级比速度高生成的图片质量比较好但速度慢

*/

tag.getGraphics().drawImage(img.getScaledInstance(newWidth,newHeight,Image.SCALE_SMOOTH),0,0,null);

StringformatName=(outputDir+outputFileName).substring((outputDir+outputFileName).lastIndexOf(".")+1);

//FileOutputStreamout=newFileOutputStream(outputDir+outputFileName);

////JPEGImageEncoder可适用于其他图片类型的转换

//JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);

//encoder.encode(tag);

ImageIO.write(tag,formatName,newFile(outputDir+outputFileName));

//out.close();

}

}catch(IOExceptionex){

ex.printStackTrace();

}

return"ok";

}

publicStringcompressPic(StringinputDir,StringoutputDir,StringinputFileName,StringoutputFileName){

//输入图路径

this.inputDir=inputDir;

//输出图路径

this.outputDir=outputDir;

//输入图文件名

this.inputFileName=inputFileName;

//输出图文件名

this.outputFileName=outputFileName;

returncompressPic();

}

publicStringcompressPic(StringinputDir,StringoutputDir,StringinputFileName,StringoutputFileName,intwidth,intheight,booleangp){

//输入图路径

this.inputDir=inputDir;

//输出图路径

this.outputDir=outputDir;

//输入图文件名

this.inputFileName=inputFileName;

//输出图文件名

this.outputFileName=outputFileName;

//设置图片长宽

setWidthAndHeight(width,height);

//是否是等比缩放标记

this.proportion=gp;

returncompressPic();

}

}

六、实验过程中的问题及对应思考

实验中出现了找不到输出文件的问题,后考虑到可能是文件大小关系,所以换了一个小一些的图片,完成实验

 

实验三超媒体开发设计

一、实验目的

1、熟悉超文本和超文本系统的建立和典型的外部模型;

2、熟练的运用超文本标记语言的标记方法展示超媒体;

3、通过运用超文本标记语言熟悉结点和链之间形成的超媒体结构。

二、实验环境

1、主流操作系统系统;

2、主流浏览器;

3、系统有文本编辑器和网站开发工具。

三、实验内容

1、运用超文本标识语言和可扩展语言架构Web站点的基本框架;

2、练习超文本标识语言进行超媒体站点架构时的合理布局及技巧;

3、Web站点主题内容不限,但必须要有一明确主题体现超媒体;

4、可以用记事本编写实验代码;

5、根据实验内容撰写对应的实验报告;

6、回答老师的对应考核提问。

四、设计方案

使用canvas做出一个H5小游戏

主要需要实现

大鱼吃果实

大鱼喂小鱼

小鱼恢复体力

还有一定的场景和界面的

五、实验代码

Index.html

DOCTYPEhtml>

lovefish

游戏规则

鼠标控制大鱼吃果实

吃到果实后喂给小鱼
若无及时投喂则小鱼死亡
红色果实1分
蓝色果实两分

RESTART

Ane.js

varaneObj=function(){

this.rootx=[];

this.headx=[];

this.heady=[];

this.amp=[];

this.alpha=0;

this.num=50;

}

//初始化

aneObj.prototype.init=function(){

for(vari=0;i

this.rootx[i]=i*20+Math.random()*20;

this.headx[i]=this.rootx[i];

this.heady[i]=canHeight-200+Math.random()*50;

this.amp[i]=Math.random()*50+50;

}

};

//绘制海葵

aneObj.prototype.draw=function(){

this.alpha+=deltaTime*0.001;

varl=Math.sin(this.alpha);//

ctx2.save();

ctx2.globalAlpha=0.6;

ctx2.strokeStyle="#3b154e";

ctx2.lineWidth=20;

ctx2.lineCap="round";

for(vari=0;i

//

ctx2.beginPath();

ctx2.moveTo(this.rootx[i],canHeight);

ctx2.quadraticCurveTo(this.rootx[i],canHeight-80,this.headx[i]+l*this.amp[i],this.heady[i]);

ctx2.stroke();

}

ctx2.restore();

};

Baby.js

varbabyObj=function()

{

this.x;

this.y;

this.angle;

//this.babyEye=newImage();

//this.babyBody=newImage();

//this.babyTail=newImage();

//this.babyTail=[];//尾巴数组

//this.babyEye=[];//眼睛数组

 

this.babyTailTimer=0;//计时器

this.babyTailCount=0;//现在执行到哪一帧

this.babyEyeTimer=0;//计时器

this.babyEyeCount=0;//现在执行到哪一帧

this.babyBodyTimer=0;//计时器

this.babyBodyCount=0;//现在执行到哪一帧

this.babyEyeInterval;//这张图片持续多久

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1