为了在我的应用程序中保存图形对象的颜色属性,我将此颜色的字符串表示保存在数据文件中。例如,对于红色,我保存:java.awt.Color[r=255,g=0,b=0]。如何将此字符串表示形式转换为Color以便我可以在加载数据文件后再次使用它?谢谢。 最佳答案 您可能希望使用getRGB()而不是toString()。你可以打电话StringcolorS=Integer.toString(myColor.getRGB());然后就可以调用了Colorc=newColor(Integer.parseInt(colorS));
如何解释位图的内置方法getPixels返回的数组?这是我的代码:publicvoidfoo(){int[]pixels;BitmapbitmapFoo=BitmapFactory.decodeResource(mContext.getResources(),R.drawable.test2);intheight=bitmapFoo.getHeight();intwidth=bitmapFoo.getWidth();pixels=newint[height*width];bitmapFoo.getPixels(pixels,0,width,1,1,width-1,height-1);}
我做了这个函数来计算CIELab颜色空间中的颜色差异,但它缺乏速度。由于我不是Java专家,我想知道周围是否有任何Java大师有一些可以提高这里速度的技巧。代码基于评论区提到的matlab函数。/***ComputetheCIEDE2000color-differencebetweenthesamplecolorwith*CIELabcoordinates'sample'andastandardcolorwithCIELabcoordinates*'std'**Basedonthearticle:*"TheCIEDE2000Color-DifferenceFormula:Impleme
我将检索像素的确切颜色,并希望将该确切颜色与Color.blue等常量相关联。有没有一种简单的方法可以“四舍五入”到最近的颜色常数?此外,有没有办法定义您自己的颜色常量? 最佳答案 基本方法是通过简单地将sample与每个标准颜色进行比较,找到与您的sample最接近的标准颜色。当然,问题在于如何定义“最接近”。最明显的是在RGB空间中使用欧氏距离。问题是这个距离与我们对“最接近的颜色”的感知不太吻合。可以在thispaper中找到关于此问题的讨论以及一个很好的(易于计算的)度量(包括伪代码!).编辑:以防万一该论文的链接失效(或者
我在java中有一个缓冲图像,我想根据颜色值记录每个像素与另一个像素的相似程度。因此具有“相似”颜色的像素将具有更高的相似度值。例如,红色和粉色的相似度值为1000,而红色和蓝色的相似度为300或更低。我该怎么做。当我从缓冲图像像素中获取RGB时,它返回一个负整数,我不确定如何用它来实现它。 最佳答案 首先,您如何获得整数值?获得RGB值后,您可以尝试((r2-r1)2+(g2-g1)2+(b2-b1)2)1/2这将为您提供3D空间中到两点的距离,每个点由(r1,g1,b1)和(r2,g2,b2)指定。或者有更复杂的方法使用颜色的H
使用POI时,Excel文档中的单元格和字体包含颜色信息,这些信息并不总是返回rgb值,而且通常只提供索引值。必须根据某些内容查找索引值以获得颜色。在HSSFWorkbook(xls)中,有一种方法可用于获取调色板:InputStreamin=newFileInputStream("sheet.xls");HSSFWorkbookwb=newHSSFWorkbook(in);wb.getCustomPalette();当访问XSSFWorkbook(xlsx)时,没有这样的方法,事实上我在相关类中的任何地方都找不到调色板信息。我能够从XSSFont和Cell获取索引值,但是获取颜色“名
我们能否使用Java找出图像中哪种颜色占主导地位,ImageMagick,或JMagick? 最佳答案 在java中迭代每个像素并确定颜色importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedList;importjava.util
我正在尝试获取图像每个像素的每种颜色。我的想法如下:int[]pixels;BufferedImageimage;image=ImageIO.read(this.getClass.getResources("image.png");int[]pixels=((DataBufferInt)image.getRaster().getDataBuffer()).getData();是吗?我什至无法检查“像素”数组包含的内容,因为出现以下错误:java.awt.image.DataBufferBytecannotbecasttojava.awt.image.DataBufferInt我只想接收
如何将RGB格式的颜色转换成颜色名称?例子:(0,0,255)->“蓝色”(255,0,0)->“红色”(128,128,128)->“灰色” 最佳答案 这里是aworkingsamplecode那样做。它将rgb/hex值/awt颜色转换为最接近的颜色名称。importjava.awt.Color;importjava.util.ArrayList;/***JavaCodetogetacolornamefromrgb/hexvalue/awtcolor**Thepartoflookingupacolornamefromthergb
是否有有效的方法/现有解决方案来将字符串“rgb(x,x,x)”[这里的x是0-255]解析为颜色对象?[我打算使用颜色值将它们转换为十六进制颜色等值。我希望为此提供GWT选项。我还意识到使用像Scanner.nextInt这样的东西会很容易。然而,我一直在寻找一种更可靠的方式来获取这些信息。 最佳答案 据我所知,Java或GWT中没有这样的内置功能。您必须编写自己的方法:publicstaticColorparse(Stringinput){Patternc=Pattern.compile("rgb*\\(*([0-9]+),*(