我创建了一个对话框,用户可以在其中浏览图像,然后查看在Canvas上绘制的图像的预览。图像被缩放,以便在适合盒子时保持其纵横比。我使用了在thisanswer中找到的调整大小的方法,这涉及将图像从SWT转换为AWT,执行调整大小,从AWT转换回SWT,最后将其绘制在Canvas上。由于此过程在时间和处理能力方面的成本非常高,我选择如果图像大小正确则跳过调整大小的步骤,因此不需要以任何方式进行转换。处理具有alpha透明度的图像时会出现此问题。在某些情况下,首先转换的具有透明度的图像会以黑色背景绘制在Canvas上。同一图像的副本已调整为Canvas的精确大小,因此未转换,具有白色背景。
我的应用程序需要调整ImageData的大小。不幸的是,我还没有通过GC(启用抗锯齿和高插值)或ImageData.scaledTo()获得我想要的结果。生成的图像质量太低,无法接受。调整高质量ImageData大小的最佳方法是什么?编辑:我正在缩小。 最佳答案 AWT提供不同模式的图像缩放。对于降尺度,区域平均提供最佳质量。当然可以为SWT重新实现面积平均缩放算法,或者,对于通常足够的快速解决方案:将SWT图像转换为AWT图像使用适当的模式重新缩放(如果缩小则为面积平均,否则为双线性)将其转换回为SWT图像可以找到在SWT和AWT
经过多方查找,我发现了一些将BufferedImage转换为SWTImage的代码(暂且不读):publicstaticImageDataconvertToSWT(BufferedImagebufferedImage){if(bufferedImage.getColorModel()instanceofDirectColorModel){DirectColorModelcolorModel=(DirectColorModel)bufferedImage.getColorModel();PaletteDatapalette=newPaletteData(colorModel.getRed
我想显示类似于java2s.com'Createalazyfiletree'的文件树,但包括实际的系统图标-特别是文件夹。SWT似乎没有提供这个(程序API不支持文件夹),所以我想到了以下内容:publicImagegetImage(Filefile){ImageIconsystemIcon=(ImageIcon)FileSystemView.getFileSystemView().getSystemIcon(file);java.awt.Imageimage=systemIcon.getImage();intwidth=image.getWidth(null);intheight=i
Go的image.Image接口(interface)有三个方法:Bounds(对于确定图像的大小显然是必需的),At(返回每个像素的实际颜色)和ColorModel。最后一个方法返回一个color.Model,它能够将颜色从任何模型转换为该图像使用的表示形式。为什么ColorModel是这个接口(interface)的一部分?image.Image类型的消费者如何使用它?如果我有一个图像img,而我对其底层表示一无所知,那么img.ColorModel()对我有什么好处?我可以将任何颜色转换成合适的模型,但我看不出我可以使用这种转换后的颜色做什么;其他两种与图像交互的方式,At和Bo
Go的image.Image接口(interface)有三个方法:Bounds(对于确定图像的大小显然是必需的),At(返回每个像素的实际颜色)和ColorModel。最后一个方法返回一个color.Model,它能够将颜色从任何模型转换为该图像使用的表示形式。为什么ColorModel是这个接口(interface)的一部分?image.Image类型的消费者如何使用它?如果我有一个图像img,而我对其底层表示一无所知,那么img.ColorModel()对我有什么好处?我可以将任何颜色转换成合适的模型,但我看不出我可以使用这种转换后的颜色做什么;其他两种与图像交互的方式,At和Bo
我正在自学围棋。我决定尝试一些计算机视觉的东西。首先我要做一个图像直方图。我正在尝试获取颜色模型,以便知道像素的强度范围。当我打印image.ColorModel()时,它会给我一个神秘的十六进制输出:颜色模型:&{0x492f70}我在文档中找不到任何解释。我期待某种枚举类型的东西可以映射到颜色模型,如NRGBA、RGBA等。那个十六进制是什么意思?和号花括号&{...}是什么意思?另外,NRGBA中的“N”是什么,我找不到任何相关信息。 最佳答案 为了扩展putu的答案,将返回的颜色模型与image的“准备好的”模型进行比较包仅