`

SWT 图像 —— 简介

 
阅读更多

Java Image的文章中应用的原文有:

http://www.ibm.com/developerworks/cn/opensource/os-cn-swtimage/

http://www.eclipse.org/articles/Article-SWT-images/graphics-resources.html

http://www.ibm.com/developerworks/cn/opensource/os-swt/

http://www.chineselinuxuniversity.net/articles/22080.shtml

http://www.ibm.com/developerworks/cn/java/j-2dswt/

http://www.roboticfan.com/blog/user_2005/104/archives/2009/200917105534.shtml#

 

写这些,并没有增加多少新的内容,就当自己的读书笔记吧。

 

SWT Image的简介:

 

软件开发人员可以利用 SWT 封装的 Image, ImageData 等类来创建图像、存储图像数据,也可以对存储的图像数据进行各种图像变换。本文将演示如何正确的使用 Image, ImageData 等类,以及如何使图像变灰、变亮/黑、图像旋转、图像拉伸、图片透明叠加、图片反色等相关问题。

下面就来介绍一下 Image 和 ImageData 这两个在 SWT Images 中最重要的类。

类 org.eclipse.swt.graphics.Image 被用来表示可以在设备上显示的图片,可以用方法如GC.drawImage() 或者 Button.setImage() 等来将它显示出来。Image 类提供了几个构造函数,可以完成以下功能:

· 装载一个现有的图象。可以通过传入文件名或者 InputStream 作为参数,但是图象的格式必须是它所支持的格式之(目前 SWT Image 支持 BMP、GIF、JPG、PNG、Windows ICO 等格式)一,否则会抛出 SWTException 异常。

· 构造一个用已经存在的 ImageData 进行初始化的图像。

· 构造一个空图像。可以通过修改其像素值或者向它拷贝一个 SWT 图形上下文的内容 (GC) 来绘制该图像,并且可以指定空图像的大小。

类 org.eclipse.swt.graphics.ImageData 中存储了图像的像素数据信息。 ImageData 是一个包含有关图像大小、调色板、颜色值和透明度等信息的类。我们可以对这些图像像素数据可以直接读或者写操作,这意味着可以通过直接读取或者修改图像的数据,来设置或者取得图像中任何像素或者任何一组像素的颜色值。关于 ImageData ,我们还应当了解以下一些字段:

· width 和 height 指定图像的宽和高。Depth 指定图像的颜色深度。可能的值为 1、2、4、8、16、24 或者 32,指定编码每一个像素的值所使用的比特数【注意是比特数,也就是说深度是8的,一个字节就可以表示一个像素点了,深度是24需要8个字节。颜色深度是8,说明一个像素点有256种颜色,深度为24,一个像素点有256*256*256种颜色】

· alpha 与 alphaData 定义图像的透明度。alpha 定义了图象的全局透明度值,默认值为 -1,否则 alphaData 域将被忽略。当 alpha 不等于 -1 时, alphaData 存储了图象的透明度缓冲区,每个像素可以有一个在 0~255 之间的透明度值,数值越大,表示越不透明。值得注意的是,只有部分图象格式具有透明度,例如 GIF 和 PNG。

· palette 包含一个 PaletteData 对象,它存储有关图像的颜色模型的信息。SWT 的颜色模型可以是索引或者直接的,由其域 isDirect 来指定。如果颜色模型是索引的,那么 PaletteData 包含颜色索引,可以通过方法 getRGBs() 来获取 RGB 信息。如果它是直接的,那么它包含转换信息,表明应当如何从像素的整数值中提取出颜色 RGB 成分。【1位2种可能,2位4种可能,4位16种,8位256种,16位65536种,24为。。。。这样8位和以下采用索引还行,建一个256的RGB数组,16、24、32需要建的数组就太大了】【直接的,怎么提取呢?】

· data 包含像素值的字节缓冲区。字节编码的方法取决于所使用的颜色深度。对于一个 8 位的图像,数组中的一个字节正好表示图像中一个像素的值。对于 16 位图像,每一个像素值编码为缓冲区中的两个字节。这两个字节以最低有效字节顺序存储【这是为了和Window内部是这么储存的】。对于 24 或者 32 位图像,每一个像素值以最高有效位字节顺序编码为缓冲区中的三个或者四个字节。

· bytesPerLine 表明缓冲区中有多少字节用于表示图像中一行像素的所有像素值。由于一个像素可能有多个字节表示,所以 bytesPerLine 可能是字段 width 值的若干倍。

 

To have a higher color depth (such as 16, 24, or 32) a direct palette must be used. 

以为16为的话,如果用index的方式的palette的话,里面要建一个65536大的。

 

2^08 0,000,000,256

2^16 = 0,000,065,536

2^24 = 0,016,777,216

2^32 = 4,294,967,296

 

所以索引图像的最高深度是8。palette中存256种颜色的数组。这样的话也就是说理论上16*16=256或则小的图片是一定能够用索引图像来表示。

<!--EndFragment-->

分享到:
评论

相关推荐

    Java SWT API参考(chm)

    本参考文档——"Java SWT API参考(chm)"——是一个详细的技术指南,涵盖了SWT库的各种组件、类和方法。 SWT API的核心在于它提供的各种组件,例如按钮、文本框、列表、树视图、滚动条等,这些组件与操作系统原生UI...

    java-swt

    标签“swt-3.4M4-win32-win32-x86”指明了SWT的版本(3.4 Milestone 4)以及它适用于的平台——Windows 32位系统。SWT有多个版本,并且为不同的操作系统和硬件架构提供了相应的实现。 使用SWT,开发者可以创建诸如...

    基于的系统分析与设计——时频分析.rar

    2. **小波变换**:MATLAB的小波工具箱(Wavelet Toolbox)提供了多种小波基函数,如`morlet`、`sym8`等,以及对应的变换函数,如`cwt`用于连续小波变换,`.swt`用于离散小波变换。 3. **多尺度分析**:MATLAB的`...

    Eclipse_Swt_Jface_核心应用_部分19

    1.4 Eclipse贡献SWT工具包 5 1.4.1 SWT的结构 6 1.4.2 SWT所支持的操作系统 6 1.5 Sun AWT/Swing与Eclipse SWT 7 1.5.1 Swing与SWT的比较 7 1.5.2 SWT的优势和不足 8 1.6 SWT与JFace、Eclipse 9 1.6.1...

    Matlab信号处理——小波变换.pdf

    在MATLAB中,实现小波变换可以使用内置的小波工具箱,包括`wavemngr`、`cwt`、`swt`、`waverec`等函数,它们提供了对各种小波基的选择、变换、重构等功能,方便用户进行信号处理和分析。通过调用这些函数,用户可以...

    二维画图板——绘制橡皮筋图形

    这篇实验报告讲述了如何使用Java语言中的SWT(Standard Widget Toolkit)和Graphics2D类来实现一个简单的二维画图板。这个画图板允许用户绘制多种图形,包括铅笔画、直线、空心和实心的圆形、椭圆以及矩形,并支持...

    TableViewer示例

    【TableViewer示例】——全面探索TableViewer的使用 在Java SWT(Standard Widget Toolkit)库中,TableViewer是一个强大的组件,用于在用户界面中展示表格数据。它提供了丰富的功能,如排序、过滤、编辑和自定义列...

    毕业论文基于小波变换手指静脉去噪技术.doc

    静态小波变换(Static Wavelet Transform, SWT)是一种强大的信号分析工具,尤其适用于图像处理。它能够将图像分解为多个不同频率的子带,即近似信号(approximation signal)和细节信号(detail signal)。近似信号...

    小波多尺度多传感器数据融合

    本文中提到的三种小波变换——离散小波变换(DWT)、平移不变小波变换(SWT)和双树复小波变换(DT-CWT),各有优缺点。其中,DWT虽然在图像融合中应用广泛,但存在位移不变性差、方向选择性不佳和缺乏相位信息的...

    The Standard Widget Toolkit

    ### SWT:标准部件工具包——Java图形用户界面开发的核心指南 #### 一、概述与背景 《SWT:标准部件工具包》是一本专注于Java图形用户界面开发的专业书籍,由Steve Northover和Mike Wilson共同撰写,并由Addison ...

    java swing资料大全

    《Java SWT tutorial.doc》提到了另一个用于构建GUI的库——SWT(Standard Widget Toolkit)。与Swing不同,SWT是基于操作系统原生UI组件的,因此可以提供更接近本地应用的外观和感觉。这个教程可能会对比SWT和Swing...

    GUI_handles.zip_GUI_handles_GUI_handles.zip _MATLAB GUI源代码_Matla

    在MATLAB GUI中,"handles"是一个关键概念,它是一种数据结构,存储了GUI组件(如按钮、文本框、图像等)的信息。每个GUI组件都有一个唯一的句柄,这使得程序员可以通过句柄来访问和控制组件的属性和行为。例如,你...

    eclipse 图像界面设计 VE插件 (包含所需emf,gef)及安装教程

    在本文中,我们将深入探讨Eclipse中的图像界面设计工具——Visual Editor(VE)插件,以及如何在Eclipse 3.2版本中安装它,同时涉及与VE相关的EMF(Eclipse Modeling Framework)和GEF(Graphical Editing Framework...

    Draw2D教程.doc

    `Figure`的图形绘制可以通过`Graphics`对象实现,它与SWT的`GC`类似,提供了一系列绘图方法,包括线条、几何形状、图像和文字的绘制。值得注意的是,`Graphics`对象支持在`LightweightSystem`中的移动,这使得Draw2D...

    cwt_cwt_连续小波变换_

    **连续小波变换(Continuous Wavelet Transform, CWT)**是一种数学分析方法,它在信号处理和图像分析领域中有着广泛的应用。与离散小波变换(DWT)不同,CWT可以对任意频率的信号进行局部化分析,提供一种在时间和...

    FLASH课程期末考试的题型.pdf

    考试结构严谨,总分为100分,包括四种题型:单选题、多选题、判断题以及独特的新题型——操作填空题。 单选题共有40题,每题1分,主要考察基础知识的理解与记忆。多选题10题,每题2分,难度稍高,要求学生具备辨别...

    hibernate相关资源

    Avalon引入了一种新的标记语言——XAML(可扩展应用程序标记语言),可用于定义文本、图像和控件的布局。不同于Flex和Laszlo,Avalon的应用程序必须运行在Longhorn环境中。 ##### 4. Java SWT - **Java SWT**: 已经...

    Eclipse从入门到精通2

    ### Eclipse从入门到精通2 —— JFace TableViewer详解 #### 概述 本文档针对CSDN上《Eclipse从入门到精通2》一书的部分更新内容进行了整合,主要聚焦于Eclipse环境下JFace框架的TableViewer组件的深入解析。...

Global site tag (gtag.js) - Google Analytics