- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要用 PHP 创建调色板。我使用这样的代码:
for ($x = 0; $x < $this->width; $x += $level) {
for ($y = 0; $y < $this->height; $y += $level) {
$index = imagecolorat($this->workingImage, $x, $y);
$rgb = imagecolorsforindex($this->workingImage, $index);
$color = $this->getClosestColor($rgb["red"], $rgb["green"], $rgb["blue"]);
$hexarray[] = $this->RGBToHex($color[0], $color[1], $color[2]);
}
}
我该怎么做?对于任何图片,我至少需要 10 种颜色。我尝试使用另一种方法,在接收调色板之前对图像进行像素化,但这对我没有帮助。
最佳答案
不幸的是,您将初始图像与不正确的结果和期望的结果混淆了,因此我将其分离为下面的 image.png
:
现在,我计划使用 pnmquant
,它是 NetPBM 包的一部分,可以从 SourceForge 预编译并准备安装在大多数平台上。
因此,首先我需要将您的 PNG
转换为 NetPBM 的 PPM
格式,以便 pnmquant
工具工作 - 我将使用 pngtopnm
为此。然后我想将颜色提取为色板并放大色板,以便您可以看到比提取的 21 像素更大的东西 - 我将为此使用 ImageMagick,并且我想制作它的文本表示以便您可以看到数字,我将为此使用 ImageMagick。
pngtopnm image.png | pnmquant 21 | pnmtopng > result.png
convert image.png pnm:- | pnmquant 21 | convert - -unique-colors -scale 400x swatch.png
convert image.png pnm:- | pnmquant 21 | convert - -unique-colors -depth 8 txt:
# ImageMagick pixel enumeration: 21,1,65535,srgb
0,0: (65278,9766,2827) #FE260B srgb(254,38,11)
1,0: (65278,15163,2570) #FE3B0A srgb(254,59,10)
2,0: (65535,10794,5140) #FF2A14 srgb(255,42,20)
3,0: (65535,11565,5140) #FF2D14 srgb(255,45,20)
4,0: (65278,11308,5140) #FE2C14 srgb(254,44,20)
5,0: (65535,11822,5140) #FF2E14 srgb(255,46,20)
6,0: (65278,11822,5140) #FE2E14 srgb(254,46,20)
7,0: (65278,19532,3341) #FE4C0D srgb(254,76,13)
8,0: (65278,20817,3855) #FE510F srgb(254,81,15)
9,0: (65278,16962,5140) #FE4214 srgb(254,66,20)
10,0: (65535,20303,4369) #FF4F11 srgb(255,79,17)
11,0: (65278,20817,4626) #FE5112 srgb(254,81,18)
12,0: (63479,33410,28270) #F7826E srgb(247,130,110)
13,0: (62451,56540,55769) #F3DCD9 srgb(243,220,217)
14,0: (62708,61166,59110) #F4EEE6 srgb(244,238,230)
15,0: (62451,62708,62965) #F3F4F5 srgb(243,244,245)
16,0: (65278,63736,62965) #FEF8F5 srgb(254,248,245)
17,0: (62194,65278,65535) #F2FEFF srgb(242,254,255)
18,0: (65278,64250,63736) #FEFAF8 srgb(254,250,248)
19,0: (65535,65535,65535) #FFFFFF white
20,0: (65278,65278,65278) #FEFEFE srgb(254,254,254)
关于PHP,可以把上面的命令行工具shell出来执行,或者看源码适配PHP。
关于php - 在 PHP 中从图像生成调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36236111/
是否可以更改 Matplotlib 在为图形线条生成自己的颜色时循环使用的颜色?我正在使用 pylab 模块。 from pylab import * import matplotlib.cm as
R中是否有可以处理许多数据类的调色板的好包?我有 16 个连续数据类。我试过 RColorBrewer 但它最多有 9 个数据类,我也试过 Rainbow() 但它对顺序数据没有吸引力。谢谢 最佳答案
一些与 previous question 相关的内容 我想采用 gnuplot 的默认(pm3d 默认)调色板,并在 X 处放置一个白色值,并将任何 >=X 的内容设置为白色,但其余部分( 例如,我
我正在尝试使用调用 Web 服务的结果(这是一个分段列表)来填充 Tapestry 5 中的调色板组件。 Segment 是一个普通的类,具有一些属性,如标题...我想将标题显示为可用、选定的调色板列
我最近在 Eclipse 4.3 (Kepler) 上安装了 windowBuilder 工具。当我尝试在布局设计器上进行一些工作时,我的调色板窗口上不会出现任何组件。只有一些组件,如“布局 ->布局
我计划从我的 RecyclerView 中的每个 bitmap 中获取每一种鲜艳的颜色,并将其设置为我的文本的背景。所以我尝试了以下: Picasso.with(ctx)
如何使用D3 Palettes在 Bokeh ?我尝试以这种方式导入,但收到未解析的引用错误消息 from bokeh.palettes import Category20 Bokeh 版本: pri
Seaborn 允许定义包含多种颜色的调色板,这对具有多行的图表很有用。但是,当将调色板设置为具有多种颜色的调色板时,仅使用前六种颜色,之后颜色会循环使用,因此很难区分线条。这可以通过显式调用调色板来
实际上我正在开发一个包含 Material 设计抽屉导航的 android 应用程序,我想每 5 分钟动态更改状态栏、操作栏、文本颜色的颜色。实际上我正在使用支持库主题来支持所有 android手机。
我为一个项目编写了一些自定义的复合小部件,并将它们编译成一个单独的 jar 文件。我将这个 jar 文件添加到 GWT 项目的构建路径中。当我尝试将小部件添加到调色板时(通过按“选择组件”按钮),我可
我在缓冲区(类型 - 长型)中有一个来自 32 位扫描仪的图像数据。 例如buffer[0]对应的像素值为952即[184, 3, 0, 0] <-[R,G,B,A]; 我想在屏幕上显示/绘画/绘图;
我的公司有一个正式的调色板,所以我需要在我的 seaborn 图表中使用这些颜色。因此,我想设置默认的 seaborn 调色板,并为这些颜色提供易于使用的名称,例如“p”代表紫色,“g”代表绿色。 这
我试图通过一个主要是数字的因素为 ggplot 着色,如下所示: iris %>% ggplot(aes(Sepal.Length, Sepal.Width, color = cut(Petal.
我在 Kubuntu 12.04 上使用 Netbeans 7。我这样启动 Netbeans: netbeans --cp:a /usr/share/java/xercesImpl.jar & Net
我已经用我选择的颜色制作了颜色图,但是我想将其转换为可用于“调色”seaborn 绘图的调色板。这可能吗?如果可能的话,怎么可能? 我用过... cmap = pl.colors.LinearSegm
我需要动态生成自定义调色板来为我的 Angular 应用配置主题。 可用的默认 Material 调色板:https://material.io/guidelines/style/color.html
首先,我从未使用过 Palette,当我想开始使用它时,我看到所有教程和博客都在谈论 v21 而不是 v22。 我的问题是我有一个 Swatch(在 swatch 数组 [palette.getSwa
我如何使用此工具中没有的颜色构建自定义 MDL:https://getmdl.io/customize/index.html 我想要那些颜色: 原色:红色 400 (#EF5350) 二次色:琥珀色
如何知道调色板png是否带有alpha?我获取有关图像 png_get_IHDR 的信息 之后我查看color_type - PNG_COLOR_TYPE_PALETTE 但是我找不到如何知道这个 p
有没有一种简单的方法可以将真彩色图像(在本例中为 24 位,位图)转换为 1Bpp 图像(调色板,转换为位图)。 我知道 imagemagick convert 可以进行转换,但出于某种原因,当我尝试
我是一名优秀的程序员,十分优秀!