java类图怎么画,根据以下Java代码画出类图

曾几何时,Java图像处理已经被认为是太过鸡肋,就连Java的创始公司,在java图像处理方面也是浅尝辄止,可能相比较C++,Java在这方面的处理,确实差强人意。不过Java类库中有一个叫JAI的库

曾几何时,Java图像处理已经被认为是太过鸡肋,就连Java的创始公司,在java图像处理方面也是浅尝辄止,可能相比较C++,Java在这方面的处理,确实差强人意。

不过Java类库中有一个叫JAI的库,全程是java advanced image—Java高级预想处理,其实个人觉得这个库非常丰富,奈何JAI只发行了2个版本就停止维护了。

到现在也没有找到源码,资料更是少的可怜。鉴于上述原因,本人将开始记录JAI以及Java 二维图像相关知识,根据以下Java代码画出类图,本文主要介绍Java图像的主要类以及图像基础知识。,

Java中我们对图像的操纵一般使用BufferImage,比如我们一般会使用一下方法,将一个图片文件读取到bufferimage

BufferedImage image = ImageIO.read(new File(&34;));

这个是将已经存在的图片文件,读取到BufferedImage中,其实大家都知道图像之所以会呈现出各种颜色,无外乎就是像素值、颜色模型、样本模型这三个重要参数来体现的。其实Java的图像类

BufferedImage也无外乎这三个重要参数。比如我们通过BufferedImage构造参数就可以发现,其中一个构造参数是

这个构造参数中,ColorModel是颜色模型,raster是栅格数据,它是由像素值和样本模型构成的,这个我们可以通过它的构造函数看到

protected WritableRaster(SampleModel sampleModel,DataBuffer dataBuffer,Point origin)

其中sampleModel是样例模型,dataBuffer是像素值数组。

下面介绍以上三个要素:

ColorModel

Java中ColorModel的实现类主要有ComponentColorModel、IndexColorModel等,我们先来看看ComponentColorModel构造函数

public ComponentColorModel (ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)

其中colorSpace很重要,颜色空间其实决定了最终这些像素值是如何呈现在我们硬件上的,比如我们的电脑显示器,印刷等。

比如常见以下颜色空间:

RGB彩色模型@Native public static final int TYPE_RGB = 5; 灰度模型@Native public static final int TYPE_GRAY = 6CMYK彩色模型@Native public static final int TYPE_CMYK = 9;

比如我们通常的彩色图是用 TYPE_RGB,创建灰度图用TYPE_GRAY,以及TYPE_CMYK颜色模型。

使用PowerDesigner软件逆向生成java类图的方法、步骤:1、打开PowerDesiger软件,点击文件->建立新模型,新建Obect-OrientedModel2、点击语言->ReverseEngineerJava,弹出反向生成类图设置窗口;3、在反向生成类图设置窗口中,选择Reve。

hasAlpha:是否有透明通道,比如常见的png(32),就有alpha通道

isAlphaPremultiplied: 这是处理透明的一个参数(相对深奥,后面会详细研究)

transferType: 就是像素的数据类型,跟下面的dataType我认为是一样的

SampleModel

Java中sampleModel的实现类主要有ComponentSampleModel以及它的子类PixelInterleavedSampleModel,我们来看看它的构造函数

public ComponentSampleModel(int dataType, int w,int h, int pixelStride, int scanlineStride,int bandOffsets[])

其中datatype:数据类型,即就是像素值的表示单位,比如常见的RGB三通道,使用TYPE_BYTE来表示,即就是每个通道8位,用0-255来表示,常见的DEM地形数据,也会直接使用TYPE_SHORT或者TYPE_FLOAT来定义。

w: 图片宽度

h: 图片高度

pixelStride:像素步幅,其实就是我们的像素在宽和高方向的间隔设置,通常设置为1,表示每个像素都会填充一个值,如果设置为2,则表示每2个位置设置一个像素值,这样其中的databuffer数组就会相应的缩减。

scanlineStride: 线性步幅,如果pixelStride为1,则scanlineStride为width。

像素值

像素值其实就是表示颜色的数字,这里提示一点,比如RGB数据,如果数据类型是TYPE_BYTE,如果图片是10x10大小,则这个DataBufferByte的数组大小就是10*10*3。

下面我们来自定义一个图片:

byte[] rasterBuffer = new byte[10*10*3];DataBufferByte dataBuffer = new DataBufferByte(rasterBuffer,10*10*3);ColorSpace space = ColorSpace.getInstance(ColorSpace.CS_GRAY);ComponentSampleModel sampleModle = new ComponentSampleModel(DataBuffer.TYPE_BYTE,10,10,1,10*3,new int[] {0,1,2});int[] bits = {8,8,8};ComponentColorModel colorModel = new ComponentColorModel(space,bits,false,false,Transparency.TRANSLUCENT,DataBuffer.TYPE_BYTE);WritableRaster raster = Raster.createWritableRaster(sampleModle,dataBuffer,new Point(0,0));BufferedImage image = new BufferedImage(colorModel,raster,false,null);

其实在日常开发中,我们经常会遇到ComponentColorModel,但是偶尔也会遇到IndexColorModel,这两个颜色模型有什么区别呢?

自己找了一个这样的数据,解析后发现,如下操作

5、正反向工程:StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。

可以看出虽然colorModel有3通道,但实际samplemodel的band只有一个,也就是说实际只有一个samplebands

这也就解是了原本按照三通道的样本,该数据的databuffer应该是7162*5968*3 而实际它的databuffer的size只有

7162*5968,也就是上图中的data的size大小,这跟我们平时看到的ComponentColorModel的data不一样,也就是用一位byte就表示了三个通道的颜色分量。

扩展

java类图怎么画

一般对于图像显示而言,我们拿到每个通道的颜色分量,其实还是需要转为显示器等输出设备可以识别的,这个我们可以通过ColorModel的getRGB()方法,我们来看下这个方法

可以看出是通过三通道的分量的位运算获得最后的像素值,而IndexColorModel的getRGB()我们来看下

明显只有一个像素来计算最后的整数像素值。

总结

好了今天就简单介绍Java图像处理的基础操作,后续还将持续介绍一些实用的图像处理方法,下一篇将介绍Java中图像的放射变换,欢迎大家持续关注。

ue is signed");}return (getAlpha(pixel) << 24)| (getRed(pixel) << 16)| (getGreen(pixel) << 8)| (getBlue(pixel) << 0);}

画类图一般有以下3个步骤:确定类,识别类的属性和操作,组织类并确定其关系。如下:1、确定类。确定类是通过对软件需求的分析来完成的。常用的方法包括行为分析、名词识别法、CRC分析等等。其中的名词识别法就是首先把需求或。

可以看出是通过三通道的分量的位运算获得最后的像素值,而IndexColorModel的getRGB()我们来看下

final public int getRGB(int pixel) {return rgb[pixel & pixel_mask];}

明显只有一个像素来计算最后的整数像素值。

java类图怎么画

总结

企业回选上海普加软件有限公司,普加甘特图,是WEB甘特图高性能解决方案。适用于构建项目管理、生产排程等进度计划管理软件。

好了今天就简单介绍Java图像处理的基础操作,后续还将持续介绍一些实用的图像处理方法,下一篇将介绍Java中图像的放射变换,欢迎大家持续关注。

链接:

上一篇 2023年02月12 00:25
下一篇 2023年03月01 13:11

相关推荐

  • 为什么环己炔不能存在,环己炔稳定吗

    摘要:综述了近年来国内外有机过氧化物硫化体系在橡胶加工中的应用进展,并介绍了常用有机过氧化物和助交联剂的特性和用途、选择方法以及在使用过程中应该注意的问题。推荐阅读:六元环的平面键角为120,sp杂化

    2023年04月16 243
  • 搜索不到打印机怎么办,当前未搜索到打印机

    很多朋友改完win10系统就找不到打印机设备,无法设置默认打印机,今天来解析这个问题!进入设置界面通常,对于已经启动了并连接到了网络的打印机,当前未搜索到打印机,会很容易被系统识别到,只不过需要确保打

    2023年02月05 237
  • sin45度是多少,三角函数值对照表

    锐角三角函数在直角三角形中:正切tangent,记作tanA,∠A的对边a与邻边b的比。正弦sine,记作sinA,∠A的对边a与斜边c的比。sin45°=√2/2。常见的三角函数值如下表:余弦cos

    2023年02月23 242
  • 苹果xr电池多少毫安,苹果XR的优缺点

    日前,苹果XR的优缺点,苹果带来了三款iPhone新机。不过在发布会上,苹果从始至终都没有明确指出三款手机具体的电池容量,仅给出了一个十分模糊的描述:iPhoneXS/XSMax相比iPhoneX续航

    2023年02月20 275
  • 小米电视换屏幕多少钱,75寸电视换个屏幕多少钱

    6月1日,据上游新闻报道,5月31日在黑龙江发生了一起小米电视液晶屏幕脱落的事故,小米的客服表示这是个例。然而,此前在5月25日浙江也发生了一起类似的屏幕脱落事故。5月31日,黑龙江哈尔滨有网友称,7

    2023年03月02 284
  • 25英寸是多少厘米,25英吋是多少厘米

    本内容来源于@什么值得买APP,观点仅代表作者本人|作者:胡侃侃【第一步,先关注我】大家好,我是胡侃侃。一入乐高深似海,从此money是路人乐高是一种除了贵,几乎没有缺点的玩具。2023年马上要来了,

    2023年03月08 218
  • 显示器怎么看多少寸,台式电脑怎么查看显示器尺寸

    电脑屏幕尺寸怎么看?有时候我们需要知道显示器的高和宽,就需要我们自己进行测量计算,台式电脑怎么查看显示器尺寸,自己动手测试试试看吧。,如何自己计算屏幕面积?19英寸显示器演示案例:1、可通过显示器的品

    2023年03月24 204
  • 怎么呼叫转移,手机号空号大全100个

    手机号空号大全100个,近期,我登录移动APP突然发现,上月帐单中收取了0.6元语音通话费,这是从哪里来的呢?是不是移动乱收费,我对费用质疑,我想了好久,原来是这样的。我办理了呼叫转移,呼叫转移的通话

    2023年02月09 272
  • 投影机多少钱一台,家用投影机多少钱一台

    对大部分消费者而言,投影虽然都见过、用过,但如果在家中想要买一台,该如何挑选,可能并不是太懂,总的来说可以从“三方面好看”和“两方面好用”来选择。向大家推荐当贝D1投影,仅2000元档价位,不仅售价亲

    2023年02月28 269
  • 怎么删除浏览记录,怎么删除浏览记录苹果手机

    很多人可能不知道,你的上网记录全都被记录了下来,不管你是在家里电脑上还是在别的电脑上,怎么删除浏览记录苹果手机,你浏览过的网页,搜索过的资料,日期和时间全都被记录下来,你的小秘密可能就不是秘密了,你的

    2023年02月11 223
  • vivo手环多少钱,vivo手机手环教程

    从去年下半年开始,手机市场正式的进入了全面屏时代。不过一款真正100%全面屏产品我们暂时由于技术原因是看不到的,厂商们也将全部工作重心放到了如何提高屏占比方面。如果让我推荐一款非常不错的高屏占比手机,

    2023年04月08 271
  • 淘宝开店保证金多少,开淘宝网店需要多少保证金

    目前,淘宝网店铺保证金额度采用基础额度+违规风险额度构成的方式。若无违规风险,就只需要根据成交类目缴纳基础额度。(一)基础额度指根据卖家所有成交订单情况及商品对应的类目需要缴存的保证金额度。基础额度计

    2023年02月19 246
  • 平板怎么升级,普通平板版本太低怎么更新

    iPadOS16正式版终于发布了!普通平板版本太低怎么更新,但有部分网友反馈,自己的iPad一直没有接收到iPadOS16正式版的更新推送,重启设备和重置网络都没有用。iPad接收不到iOS最新正式版

    2023年02月11 289
关注微信