您好,欢迎访问三七文档
江苏科技大学多媒体技术考核报告(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()){casepng:casePNG:OutputStreamops=newFileOutputStream(newFile(/Users/14779/Desktop/1(1).png));ImageIO.write(img,png,ops);System.out.println(转换完成!);break;casejpg:caseJPG:ops=newFileOutputStream(newFile(/Users/14779/Desktop/1(1).jpg));ImageIO.write(img,jpg,ops);System.out.println(转换完成!);break;casebmp:caseBMP:ops=newFileOutputStream(newFile(/Users/14779/Desktop/1(1).bmp));ImageIO.write(img,bmp,ops);System.out.println(转换完成!);break;caseGIF:casegif: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的对图片的压缩处理来进行此项实验。五、实验代码packagecom.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);mypic.compressPic(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!+BR);returnno;}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=rate1rate2?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
本文标题:多媒体技术实验报告
链接地址:https://www.777doc.com/doc-7009189 .html