工厂模式设计实现读取文本文件和图像的三基色信息

原创 2016年06月01日 15:35:58

要求:

编写读文件功能,具体为读取文本文件(包括GBK,UTF8,UNICODE 编码下的文本文件,要求获得全文内容);读取图像文件(BMO,GIF,JPG ),要求获得图像的宽度、长度、每一点的RGB三基色信息。

请使用观察者模式设计该系统。

代码:

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

interface Type{
	public void read();

	public void read(String filePath);
}
class TextType implements Type{
	public void read(String filePath){
		
		try{
			String encoding="GBK";
		File file = new File(filePath);
		if(file.isFile()&&file.exists()){
			InputStreamReader du = new InputStreamReader(new FileInputStream(file),encoding);
			BufferedReader bufferedReader = new BufferedReader(du);
			String lineTxt = null;
			while((lineTxt = bufferedReader.readLine())!=null){
				System.out.println(lineTxt);
			}
			du.close();
		}else{
			System.out.println("找不到指定文件!");
		}
		}catch(Exception e){
			System.out.println("读取文件内容出错!");
			e.printStackTrace();
		}
	}

	@Override
	public void read() {
		// TODO Auto-generated method stub
		
	}
}
class ImageType implements Type{
	public void read(){
		
	}

	@Override
	public void read(String filePath) {
		   ImageIcon image=new ImageIcon(filePath);
		   InputStream in;
		   BufferedImage img = null;
		try {
			in = new FileInputStream(filePath);
			img=ImageIO.read(in);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();
		}
		
		   int wid=img.getWidth();
		   int hid=img.getHeight();
		   int rgb[][]=new int[wid][hid];
	          for(int i=0;i<wid;i++){
	               for(int j=0;j<hid;j++){
	                    rgb[i][j]=img.getRGB(i, j) & 0xFFFFFF;
	                    System.out.print(rgb[i][j]+" ");
	               }
	               System.out.println();
	          }
		    //System.out.println(wid+" "+hid);
		   }
			 }
	
class TypeFactory{
	public Type getType(String type){

		if(type==null){
			return null;
		}
		if(type.equals("TextType")){
			return new TextType();
		}else if(type.equals("ImageType")){
			return new ImageType();
		}
		return null;

	}
}
public class FactoryDemo {
	public static void main(String []args){
		
		TypeFactory typefactory = new TypeFactory();
		
		Type type1 = typefactory.getType("TextType");
		String filePath1 ="C:\\Users\\ZZT\\Desktop\\1.txt";
		type1.read(filePath1);
		System.out.println();
		Type type2 = typefactory.getType("ImageType");
		String filePath2 ="C:\\Users\\ZZT\\Desktop\\2.jpg";
		type2.read(filePath2);
	}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

关于三原色以及三基色,白色,黑色的合成原理!

http://zhidao.baidu.com/link?url=m8v5_bOuVCDsiYyS6oi0DqXL6WEr_dAtw3VKvouXEQSUQMuBlvMrNChAB1iyciwBK9q...
  • ysmz4
  • ysmz4
  • 2015年08月19日 10:16
  • 734

三基色、三原色的区别

问:三基色、三原色的区别? 答:简单的说:三原色是颜料方面的,三基色是光线方面的。用红黄蓝三种颜色的颜料能调出任何颜色,用红绿蓝三种颜色的光线能组合出任何颜色的光。...
  • crisis111
  • crisis111
  • 2015年05月07日 08:22
  • 244

LabVIEW教程之显示图像的方法二控件显示图像

http://www.csn-tech.com/News_View.asp?id=122 在前一篇LabVIEW教程中为您介绍了第一种LabVIEW显示图像的方法在外部窗口中显示图像。这一篇...
  • alec1987
  • alec1987
  • 2015年11月10日 21:50
  • 3424

【图形和图像】三原色

前言               颜色是创建图像的基础,在计算机上使用颜色是通过一套特定的记录和处理三色的技术来实现的。要理解图像处理软件中所出现的各种术语,首先要具备一些基础知识。 颜色 ...
  • Gnd15732625435
  • Gnd15732625435
  • 2016年11月03日 14:49
  • 862

模式设计--工厂

工厂,就是帮别人生产的。公司出钱让工厂生产,这样有效的降低了公司于产品的联系,即降低了耦合性。工厂模式分为简单工厂,工厂方法,抽象工厂。以手机为例,具体如下:     简单工厂:     一个手机...
  • XiaoQianKang
  • XiaoQianKang
  • 2016年07月05日 14:33
  • 105

opencv学习(5)图像像素的访问、颜色通道的分离和融合

代码都是源于毛星云的《opencv3.0编程入门》1、计时函数 getTickCount()和getTickFrequency()函数; getTickCount()函数返回CPU自某个事件...
  • qq_29828623
  • qq_29828623
  • 2016年07月22日 11:46
  • 2141

三基色原理与色彩模式

1.在物理课中我们可能做过棱镜的试验,白光通过棱镜后被分解成多种颜色逐渐过渡的色谱,颜色依次为红、橙、黄、绿、青、蓝、紫,这就是可见光谱。其中人眼对红、绿、蓝最为敏感,人的眼睛就像一个三色接收器的体系...
  • liyue11224620
  • liyue11224620
  • 2017年08月17日 12:55
  • 95

iOS中使用工厂模式定制cell

1 工厂模式介绍 工厂模式可以分为简单工厂模式, 工厂方法模式, 抽象工厂模式. 1.1 简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factor...
  • morningCookies
  • morningCookies
  • 2016年03月22日 20:57
  • 656

读取源文件内容的每一行,求和再存入最后一行

要求如下: 读取源文件内容的每一行,求和再存入最后一行 代码如下: public class TestDemo7 { public static void main(String[] args) ...
  • wangqing84411433
  • wangqing84411433
  • 2017年01月01日 15:21
  • 107

opencv 读取图片信息及区域数据

#include #include #include void main() { IplImage* src_img=cvLoadImage("zjut.jpg",1); ...
  • sunboyiris
  • sunboyiris
  • 2014年02月27日 11:27
  • 1662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工厂模式设计实现读取文本文件和图像的三基色信息
举报原因:
原因补充:

(最多只允许输入30个字)