多媒体技术实验报告.docx
《多媒体技术实验报告.docx》由会员分享,可在线阅读,更多相关《多媒体技术实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
多媒体技术实验报告
江苏科技大学
多媒体技术考核报告
(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