`

BufferredImage 转换为ImageData

阅读更多
public void setImage(final BufferedImage bufferedImage) {

BufferedImage scaledImage = new BufferedImage(bufferedImage.getWidth(),
bufferedImage.getHeight(), BufferedImage.TYPE_INT_ARGB);//把现有的bufferedImage的颜色模式转换为DirectColorModel
Graphics2D localGraphics2D = scaledImage.createGraphics();
localGraphics2D.drawImage(bufferedImage, 0, 0, scaledImage.getWidth(),
scaledImage.getHeight(), null);
localGraphics2D.dispose();
ImageData imageData = convertToSWT(scaledImage);
//label.setImage(new Image(Display.getDefault(), imageData));

}



public static ImageData convertToSWT(BufferedImage bufferedImage) {
if (bufferedImage.getColorModel() instanceof DirectColorModel) {
DirectColorModel colorModel = (DirectColorModel) bufferedImage
.getColorModel();
PaletteData palette = new PaletteData(colorModel.getRedMask(),
colorModel.getGreenMask(), colorModel.getBlueMask());
ImageData data = new ImageData(bufferedImage.getWidth(),
bufferedImage.getHeight(), colorModel.getPixelSize(),
palette);
WritableRaster raster = bufferedImage.getRaster();
int[] pixelArray = new int[4];
for (int y = 0; y < data.height; y++) {
for (int x = 0; x < data.width; x++) {
raster.getPixel(x, y, pixelArray);
int pixel = palette.getPixel(new RGB(pixelArray[0],
pixelArray[1], pixelArray[2]));
data.setPixel(x, y, pixel);
}
}
return data;
} else if (bufferedImage.getColorModel() instanceof IndexColorModel) {
IndexColorModel colorModel = (IndexColorModel) bufferedImage
.getColorModel();
int size = colorModel.getMapSize();
byte[] reds = new byte[size];
byte[] greens = new byte[size];
byte[] blues = new byte[size];
colorModel.getReds(reds);
colorModel.getGreens(greens);
colorModel.getBlues(blues);
RGB[] rgbs = new RGB[size];
for (int i = 0; i < rgbs.length; i++) {
rgbs[i] = new RGB(reds[i] & 0xFF, greens[i] & 0xFF,
blues[i] & 0xFF);
}
PaletteData palette = new PaletteData(rgbs);
ImageData data = new ImageData(bufferedImage.getWidth(),
bufferedImage.getHeight(), colorModel.getPixelSize(),
palette);
data.transparentPixel = colorModel.getTransparentPixel();
WritableRaster raster = bufferedImage.getRaster();
int[] pixelArray = new int[1];
for (int y = 0; y < data.height; y++) {
for (int x = 0; x < data.width; x++) {
raster.getPixel(x, y, pixelArray);
data.setPixel(x, y, pixelArray[0]);
}
}
return data;
}
return null;
}


/**
* Converts an AWT image to SWT.
*
* @param image
*            the image (<code>null</code> not permitted).
*
* @return Image data.
*/
/*
* public static ImageData convertAWTImageToSWT(Image image) { if (image ==
* null) { throw new IllegalArgumentException("Null 'image' argument."); }
* int w = image.getWidth(null); int h = image.getHeight(null); if (w == -1
* || h == -1) { return null; } BufferedImage bi = new BufferedImage(w, h,
* BufferedImage.TYPE_INT_RGB); Graphics g = bi.getGraphics();
* g.drawImage(image, 0, 0, null); g.dispose(); return convertToSWT(bi); }
*/

/**
* Not entirely sure this method is necessary for indicating 'no cache', but
* since the claim was specific to byte arrays, we'll do it.
*/
/*
* private Image convertToFromBytes(BufferedImage image) { try {
* ByteArrayOutputStream baos = new ByteArrayOutputStream();
* ImageIO.write(image, "png", baos); return
* Toolkit.getDefaultToolkit().createImage(baos.toByteArray()); } catch
* (Exception e) { return null; } }
*/

分享到:
评论

相关推荐

    java将word转换为html,包含JAVA实现代码与需要jar文件

    但是,转换过程中可能会失去一些细节,因为不是所有矢量特性都能被准确地转换为位图格式。转换后的图片质量取决于所使用的转换库和设置。 总结起来,将Word文档转换为HTML主要涉及以下步骤: 1. 引入Apache POI库。...

    C#把图片转换成数据流存入数据库中再读出来变成图片

    在C#编程中,将图片转换为数据流并存储到SQL Server数据库中,以及从数据库中读取数据流再恢复为图片,是一项常见的任务。这通常用于存储用户头像、产品图片等,节省磁盘空间并提高数据传输效率。下面我们将详细讲解...

    批量处理+Python+获得LabelMe标注的json文件中`imageData`字段信息【Base64编码】

    【内容概要】: 该项目通过一个用户友好的图形界面,实现了自动修正指定文件夹内JSON文件的`imageData`字段,将其由null转换为正确的Base64编码格式。程序首先选择包含图像文件及其对应JSON元数据的目录,随后遍历...

    VB 将二进制图片文件转换为Base64字符串文本

    2. **编码为Base64字符串**:VB.NET提供了`Convert.ToBase64String`方法,将字节数组转换为Base64字符串。 ```vb Dim base64String As String = Convert.ToBase64String(imageData) ``` 3. **处理结果**:转换后...

    C#将jpg格式图像转换为数据流,数据流恢复jpg格式图像并显示

    在C#中,我们可以使用`System.IO`命名空间下的`FileStream`类来读取图像文件,然后使用`MemoryStream`类将其转换为数据流。以下是一个简单的示例代码: ```csharp using System.IO; // 加载jpg图像文件 ...

    HarmonyOS应用开发-ImageData对象练习.docx

    接下来,通过`createImageData`方法创建了一个宽高均为1像素的ImageData对象,并将其存储在`imageData`变量中。最后,通过调用`prompt.showToast`方法显示ImageData对象的信息。 #### 六、总结 通过本篇文档的学习...

    海康sdk转换成C#

    要将其转换为C#,我们需要使用P/Invoke(Platform Invoke)技术。P/Invoke是.NET Framework提供的一种机制,允许托管代码(如C#)调用非托管代码(如C/C++ DLL中的函数)。 步骤如下: 1. **定义C#的委托**:C#中...

    C# byte数组与Image相互转换的方法

    1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。 2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。 3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。 ...

    Python库 | imagedata-1.2.9.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:imagedata-1.2.9.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    如何将图片转换成二进制存储

    当我们说“将图片存储为二进制”时,实际上是将图片文件转换为一个二进制数据流,然后将这个数据流存入数据库中。 #### 将图片转换为二进制数据 1. **根据图片路径获取二进制数据** ```csharp public byte[] ...

    VB将二进制图片文件转换为Base64字符串文本

    在VB中,我们可以使用System.Text.Encoding类的GetBytes方法将字符串转换为字节数组,然后使用Convert.ToBase64String方法将字节数组转换为Base64字符串。相反,如果你想从Base64字符串恢复原始的二进制数据,可以...

    java引用POI将Word、Excel转换为html

    在Java中使用POI进行文件转换,特别是将Word和Excel文档转换为HTML,是一项常见的任务,尤其在数据导出、网页展示或者跨平台数据共享时非常有用。 首先,我们来详细了解一下如何使用POI进行转换: 1. **安装和导入...

    利用OpenCV中对图像数据进行64F和8U转换的方式

    上述代码首先加载了一张图片并转换为灰度图像,然后使用`cvConvertScale()`将灰度图像从8U转换为64F。 ##### 3.2 从64F到8U的转换 同样地,从64位浮点型图像转换回8位无符号整型图像也可以使用`cvConvertScale()`...

    Halcon/Opencv/VC之间图像相互转换

    由于C++中也需要考虑字节对齐问题,因此从Halcon转换到C++时,需要根据图像宽度是否为4的倍数来决定是否需要额外的填充操作。 ##### 3. OpenCV到Halcon 假设OpenCV图像为`cvImg`,其大小为`modelWid*modelHei`。...

    [C#]image与byte数组的转换

    在C#编程中,图像(Image)与字节(Byte)数组之间的转换是常见的操作之一,尤其是在处理图像数据、网络传输或存储时尤为常见。本文将详细介绍如何在C#中实现图像与字节数组之间的相互转换,并提供具体的代码示例。 ...

    deepstream-imagedata-multistream.py

    myself

    图片转换成base64码

    标题"图片转换成base64码"涉及到的核心知识点是将图像文件转化为Base64字符串的过程。这种转换在很多场景下非常有用,比如在前端开发中,当需要在网页上直接显示图片而服务器又不支持二进制文件上传时,可以将图片...

    C#图片转换成二进制流并且保存到sql_server数据库

    在C#编程中,将图片转换为二进制流并保存到SQL Server数据库是一种常见的数据存储方式,尤其适用于处理图像、音频、视频等非结构化数据。以下将详细阐述这一过程涉及的关键知识点。 1. 图片转二进制流: 在C#中,...

    C# Word文档到图片(不需要安装Office)

    在IT行业中,有时候我们需要将Word文档转换为图片格式,以便于在网络上分享或者嵌入到其他非文本环境中。在本教程中,我们将详细讲解如何在C#编程环境下,不依赖Microsoft Office的安装,实现Word文档到图片的转换。...

    Java实现字节流与图片的转化

    使用`FileInputStream`类读取图片文件,然后将其内容转换为字节数组。以下是一个简单的示例: ```java File imageFile = new File("1.jpg"); FileInputStream fis = new FileInputStream(imageFile); byte[] ...

Global site tag (gtag.js) - Google Analytics