菜鸟呼叫高人:使用JAVA编写一个将BMP图像显示出来的程序。最好有程序,没有程序的话讲清楚思路。

菜鸟呼叫高人:使用JAVA编写一个将BMP图像显示出来的程序。最好有程序,没有程序的话讲清楚思路。,第1张

5分得话只能给你凑合写成这样子。。

import javaawtBorderLayout;

import javaawtDimension;

import javaawtEventQueue;

import javaawtGraphics;

import javaximageioImageIO;

import javaxswingJFrame;

import javaxswingJPanel;

import javaxswingborderEmptyBorder;

import javaawtGridBagLayout;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawtimageBufferedImage;

import javaxswingJOptionPane;

import javaxswingJScrollPane;

import javaxswingJTextField;

import javaxswingJButton;

import javaxswingJLabel;

import javaioFile;

public class PainterFrame extends JFrame {

private JPanel contentPane;

private JTextField textField;

private JScrollPane scrollPane;

private JPanel imagePanel;

/

Launch the application

/

public static void main(String[] args) {

EventQueueinvokeLater(new Runnable() {

public void run() {

try {

PainterFrame frame = new PainterFrame();

framesetVisible(true);

} catch (Exception e) {

eprintStackTrace();

}

}

});

}

/

Create the frame

/

public PainterFrame() {

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

setBounds(100, 100, 672, 446);

setResizable(false);

contentPane = new JPanel();

contentPanesetBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPanesetLayout(null);

scrollPane = new JScrollPane();

scrollPanesetBounds(10, 10, 644, 351);

contentPaneadd(scrollPane);

textField = new JTextField();

textFieldsetBounds(211, 372, 169, 21);

contentPaneadd(textField);

textFieldsetColumns(10);

JButton btnNewButton = new JButton("\u6253\u5F00");

btnNewButtonsetBounds(425, 371, 93, 23);

btnNewButtonaddActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

try{

paintImage();

}catch(Exception ex){

warn();

}

}

});

contentPaneadd(btnNewButton);

JLabel label = new JLabel("\u60A8\u8981\u6253\u5F00\u7684\u6587\u4EF6\uFF1A");

labelsetBounds(83, 375, 118, 15);

contentPaneadd(label);

}

private void paintImage() throws Exception{

File imageFile=new File(textFieldgetText());

if(imageFileexists()&&imageFileisFile()){

//InputStream is=new FileInputStream(imageFile);

final BufferedImage bi=ImageIOread(imageFile);

imagePanel=new JPanel(){

public void paint(Graphics g){

gdrawImage(bi, 0, 0, null);

}

};

imagePanelsetPreferredSize(new Dimension(bigetWidth(),bigetHeight()));

scrollPanesetViewportView(imagePanel);

}else{

throw new Exception();

}

}

private void warn(){

JOptionPaneshowMessageDialog(this, "您输入的无法打开");

}

}

把照片放进数据库,照片的格式最好是bmp,这样就可以在窗体上显示出来,不过这样数据库的体积会暴增。

详细的使用方法请参考Access帮助中的 PictureData 属性(本文末尾有相关帮助)。

而且,你可以直接用 commdlg API 函数来给图像框赋值,然后直接读取某个图像框的 PICTUREDATA 并存储到某个 IMAGE 字段中。这样做的优点是显示、读取方便,缺点是如果精度高,占用的硬盘空间会爆大。

详细示例请参考:

>

比如你在当前目录下有一个名为MMjpg的图像,这样做:

A = imread('MMjpg'); %将图像MMjpg读入到矩阵A中,MM不在当前目录的话要给出完整的路径

imshow(A); 显示A,也就是显示图像MM

一、计算机图形显示基本概念

随着计算机科学技术的迅猛发展,借助于计算机的图形显示技术、图像处理技术和模式识别技术均取得了重大进展。仅在电视节目制作系统中,就有电视字幕机、三维动画工作站和非线性编辑系统等几大应用领域。而在这几大应用领域中,都离不开计算机图形显示技术。

1

2.光栅图形显示器的工作原理

在图形显示卡上都有一个由视频存储器VRAM组成的显示缓冲区,它接受并暂存计算机送来的图形图像数字信息,经D/A转换为模拟信号后,再送到显示器去显示。早期的MDA卡上仅有4KB容量的显示缓冲存储器,到标准VGA卡时容量增至512KB。增强VGA卡一般为1MB容量,而目前扩展功能的显示卡上,显示缓冲区的容量已达到2MB到4MB。

显示缓冲区可以看成是一个与屏幕上像素分布一一对应的二维矩阵,其中的每一个存储单元对应着屏幕上的一个像素,其位置可以由二维坐标(x,y)来表示。显示缓冲区的存储单元与显示器屏幕坐标的对应关系可以由图1来示意。

由于每一个显示缓冲单元可以由许多个位(bit)来表示,因此在图中用Z方向来表示每一个显示缓冲单元的位。它可以只有1位,也可以多达8位、16位、24位甚至更高。每一个缓冲单元所存储的信息称之为“像素值”,它决定了像素的颜色或灰度,因此,每个缓冲单元的位数越多,则颜色种类或灰度等级也就越多。当对应每个像素的位数为n时,该像素所能表达的颜色或灰度等级数为2n。因此,当每像素为8位时,可以表示256种颜色或灰度,而当每像素为24位时,可以表示1670万种颜色或灰度。

实际的光栅扫描显示器大多采用荫罩式的CRT,由红、绿、蓝三q发射的电子束通过荫罩板射到荧光屏上对应颜色的荧光粉上。因此,前述的每一个像素值将通过一个“彩色表”将像素值转换为三种基色的分量信号,经相应的D/A转换后去分别控制三基色电子q。图2示出了缓冲单元中的像素值为4位时,彩色光栅图形显示器的工作原理。

3.图形显示过程

图形的显示过程应该从硬件和软件两个方面来说。就硬件方面来说,当电子束扫描到屏幕上某一像素的位置(坐标)时,显示器中的显示处理器DPU(DisplayProcessingUnit)会同时从对应的显示缓冲单元中取出像素值,并以此查找彩色表的地址,从该地址处得到该像素的红、绿、蓝三基色分量,经D/A转换后分别控制三基色电子q,使屏幕上该像素显示出三基色的混合色。在图2示例中,彩色表的红、绿分量分别为15,而蓝分量为0,因此,屏幕上该像素的颜色会是**。

就软件方面来说,要完成图形显示的初始化及图形的加工。这里,初始化的意思是要将计算机的显示方式设置为显示器所能够显示的某一种模式,并将所有的显示缓冲单元清零,另外,对彩色表的每一个单元要分别填上预定的颜色值,使彩色索引与具体的颜色联系起来。

图形加工则是图形软件的主要任务,其主要内容是:根据需要显示的图形内容,随时改写显示缓冲单元的内容。这是因为屏幕上显示的图形是由显示卡上显示缓冲区中的内容唯一决定的。一旦在显示缓冲单元中写入要求的彩色索引值,图形就自然在屏幕上显示出来了。

二、图形的生成

1.初始化

各种图形显示模式已经写入到机器主板上的ROMBIOS中。通过对ROMBIOS的合理调用,就可以获得所需的显示模式。由于各种显示卡可以有许多种显示模式,因此,在计算机生成任何图形之前,必须进行图形的初始化工作,也就是说必须要装入图形驱动程序,以确定计算机是工作在哪一种图形显示模式。

2.点的显示

由于图形显示器件的显示方式具有离散性质,使得任何图形的显示都是由点的集合形式呈现的,也就是说,点是构成直线、圆弧、抛物线及其它任意曲线的最基本元素,也是构成面、体等图形的最基本元素,因此在讨论计算机生成任何图形之前,首先应了解点的显示原理。

3.基本图形的生成

基本图形一般指直线段、圆弧以及由它们构成的简单几何图形。根据前面关于在屏幕上写点的说明可知,要生成基本图形,只需根据构成基本图形的各曲线段的方程找出所有符合曲线方程的点(即x、y坐标值),并在屏幕坐标的相应位置上以给定的颜色正确显示这些点,即可在屏幕上完整显示出由计算机所画出的图形。值得说明的是,计算机显示器屏幕上所能显示的最大点数由显示卡的不同显示模式所决定。因此,在进入图形显示方式时,首先要在显示器的屏幕上建立一个坐标系,且水平和垂直坐标均取为整数。当通过方程计算出来的x、y坐标值不为整数时,还应对该坐标值以四舍五入方式取整。

在实际应用中,直接根据曲线方程进行编程常常会使得程序中出现大量的实数乘除法及多层循环运算,造成程序的执行效率极低,因此实用程序中大多采用了巧妙的算法以尽量回避影响程序执行速度的因素。此部分内容属于计算机图形学的基本内容,有兴趣的读者可参阅有关的书籍,这里不赘述。

Photoshop是迄今为止世界上最畅销的图象编辑软件。它已成为许多涉及图像处理的行业的标准。并且是Adobe公司最大的经济收入来源。然而Photoshop的开始却是名不经传,如果不是Michigan大学一位研究生学生延迟毕业答辨,Photoshop或许根本就不可能被开发出来。

1987年秋,Thomes Knoll,一名美国密歇根大学正在攻读博士学位的研究生,他一直在努力尝试编写一个程序,使得在黑白位图监视器上能够显示灰阶图像。他把该程序命名为Display。但是Knoll在家里用他的Mac Plus计算机编写这个编码纯粹是为了娱乐,与他的论题并没有直接的关系。他认为它并没有很大的价值,更没想过这个编码会是伟大而神奇的Photoshop的开端,自己的姓名也将永远载入史册。

他的这个简单的娱乐性编程,却引起了他哥哥John的注意。当时John正效劳于Iindustrial Light Magic(ILM)公司——美国一家影视特效制作公司。随着《星球大战》的诞生,Lucas想向世人证明,真正的计算机软件酷效,配以传奇色彩的英雄人物,将创造出传统手法所不能达到的惊世巨片!当时John正在实验利用计算机创造特效,他让Thomas帮他编写一个程序处理数字图像,这正是Display的一个极佳起点,他们的合作也从此开始,历史已经证明,这是一个伟大的创想,今天,Photoshop已经改变了出版软件的历史,现在它在出版印刷和Web设计两方面占据了领导地位,成为了全球设计软件舞台上的主角之一,其老大地位不可动憾。

诺尔两兄弟在此后的一年多的时间里,把Display不断修改为功能更为强大的图像编辑程序,其中进行过多次改名,在一个展会上,他们接受一个参展观众建议,把这个程序改名为Photoshop(中文意:处理)。这是一个历史性的更名,此后Photoshop成为全世界都家喻户晓的设计软件。

早前年诺尔两兄弟一直着手开发Photoshop的版本,直到40版本之后,Adobe公司才出面收购Photoshop。在诺尔兄弟开发Photoshop到转手卖给Adobe公司,其中还是经历很多的很多的磨难。最初,他们俩兄弟是把Photoshop交给一个扫描仪公司搭配卖,名字叫做Barneyscan XP,版本是087。然而两兄弟继续为Photoshop找寻买家,在这个过程中,不少知名的大公司都瞧不起这个软件而拒绝了Photoshop。直到他们找到了Adobe的艺术总监,同时他们还碰上了另一款优秀的设计软件(ColorStudio)的竞争,最后是Photoshop打败对方,其实更是Adobe公司慧眼识真玉,才使得Photoshop才正式成为Adobe家族的重要一员,从此以后,Adobe公司集中了众多最优秀的图像设计及软件编程专家和工程师,这以后Photoshop开始进入一个快速成长、不断发展的新阶段,终于成为统治全球图像处理的权威老大,当年那些拒绝购买Photoshop的知名大公司,看着Adobe公司大把大把的经济收入,终于尝到了什么叫做后悔莫及的滋味。

●1987年,Knoll兄弟编写了一个灰阶图像显示程序,即Photoshop 87,又叫Barneyscan XP

●1988年,Adobe公司买下了Photoshop的发行权

●1990年,Photoshop 10发布,那个时候只有100K大小,从功能上来说仅是有了“工具面板”和少量的滤镜。

●1991年,Photoshop 20发布,Adobe成为行业标准,增加了“路径”功能,以及内存分配从以前的2MB扩展到了4MB,同时支持Illustrator文件格式。

●1992年,Photoshop 25发布,第一个MS Windows版本,Photoshop 251发布,Photoshop才可以在Windows系统上运行,以此Photoshop不再是为专业的平面设计师所专用,而是面向大众普通用户。在此,25版本增加了“Dodge”和“Burn”工具,以及“蒙版”概念。

●1994年,Photoshop 30发布,代号Tiger Mountain,在功能上增加了“图层”,这是一个极其重要的发展标志。

●1995年末,由于技术问题Photoshop 30终止运行,

●1996年末,Photoshop 40发布,代号Big Electric Cat,Adobe买断了Photoshop的所有权。40版本增加了动作功能,调整层,标明版权的水印图像。

●1998年,Photoshop 50发布,增加了历史面板、图层样式、撤消功能、垂直书写文字、魔术套索工具,其中最具创造性的新增了历史动作功能;Adobe公司终于认识到了中国市场的存在,也就是从502版本开始,Photoshop首次向中国用户设计了中文版,对于我们中国用户来说,真正开始体验到Photoshop强大的图形处理功能应该是从502版本开始。

●1999年,Photoshop 55发布,Image Ready 20捆绑发布,我们现在所使用的Photoshop捆绑ImageReady套装软件,是从1998年发布的55版本开始的,

●2000年,Photoshop 60发布。以后所有的Photoshop软件都将自动安装ImageReady。由于全球信息化的迅猛发展,网络时代也终于到来,也由于数码相机的迅猛发展,真正意义上数字暗房是从60开始,其显著标志就是在60版本的功能上,增加了强大的Web功能,包括众多的Web工具,包括Web-safe色彩面板,现在我们常用的“形状”工具是在2000年9月推出的Photoshop60版本中增加的新功能,还增加了矢量绘图工具,新的工具栏,扩展的Web工具包,增强的层管理功能。

●2002年3月Photoshop70版本发布,在功能上增加了“Healing Brush”笔刷,以及迎合数码时代的到来,Photoshop具有了强大的数码图像编辑功能,奠定了现在的数字照片处理首选软件老大的地位。

●2003年,Photoshop CS(80)发布。它集成了Adobe的其它软件形成Photoshop Creative Suit

●2005年4月Adobe Photoshop CS2发布,开发代号Space Monkey。。

●2006年,Adobe发布了一个开放的Beta版Photoshop Lightroom。

●2007年4月,发行Adobe Photoshop CS3。

●2007年,Photoshop Lightroom 10正式发布。

●2008年9月,发行Adobe Photoshop CS4,套装拥有一百多项创新。

●2008年,Adobe发布了基于闪存的Photoshop应用,提供有限的图像编辑和在线存储功能。

●2009年,Adobe为Photoshop发布了iPhone(手机上网)版,从此PS登陆了手机平台。

●2009年11月7日,发行Photoshop Express版本。

●2010年05月12日,Adobe Photoshop CS5。

●2012年3月22日发行Adobe Photoshop CS6Beta公开测试版。

●2013年2月16日,发布Adobe Photoshop v101版源代码。

●2013年6月17日,Adobe在MAX大会上推出了最新版本的Photoshop CC(CreativeCloud。)

目前photoshop最新版是photoshop cc

更详细的可以在百度百科里面查到更多更详细的资料的。

参考资料:

>

以上就是关于菜鸟呼叫高人:使用JAVA编写一个将BMP图像显示出来的程序。最好有程序,没有程序的话讲清楚思路。全部的内容,包括:菜鸟呼叫高人:使用JAVA编写一个将BMP图像显示出来的程序。最好有程序,没有程序的话讲清楚思路。、在access照片下插入图片,显示程序包,交卷显示照片错误.、怎么用MATLAB程序显示JPEG图像等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9600472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存