gpt4 book ai didi

adobe - 解码adobe颜色文件(*.ACO),需要输入理解语法

转载 作者:行者123 更新时间:2023-12-04 23:56:10 25 4
gpt4 key购买 nike

因此,我正在开发一个 Web 应用程序,以便能够更轻松地将使用 Photoshop 创建的 *.ACO 或 *.ASE 格式的调色板分发给没有这些程序的同事。我在设置基础方面已经走了很长一段路,但现在我完全陷入困境,唯一的原因是我无法弄清楚样本文件的结构。
这是我在文本编辑器中打开 *.ASE 文件时得到的结果:

ASEF          &      S w a t c h   1  RGB                   &    S w a t c h   2  RGB ?
Œ ?€ ?€ & S w a t c h 3 RGB ?oïð?)̪>mí & S w a t c h 1 RGB & S w a t c h 2 RGB ?
Œ ?€ ?€ & S w a t c h 3 RGB ?oïð?)̪>mí & S w a t c h 1 RGB & S w a t c h 2 RGB ?
Œ ?€ ?€ & S w a t c h 3 RGB ?oïð?)̪>mí & S w a t c h 1 RGB & S w a t c h 2 RGB ?
Œ ?€ ?€ & S w a t c h 3 RGB ?oïð?)̪>mí
当我在 NP++ 中打开它时,它看起来像这样:
enter image description here
我希望(并且天真地期望)该格式将采用某种易于理解的 XML 结构,但显然不是..
我试过研究这个主题,发现这些来源:
http://www.nomodes.com/aco.html
http://www.selapa.net/swatches/colors/fileformats.php
http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577411_31265
但老实说,我觉得能够把我的头包起来感觉很复杂。如果有人对文件编码格式或颜色编码格式有更好的了解,我将不胜感激!
如果您想查看这些文件,可以在此处下载这些文件:
https://www.dropbox.com/sh/9vo2h7ophpfc201/p7saMtxi_k

最佳答案

您所看到的是二进制文件的 ASCII 表示。在您分享的链接中 previously你会看到文件格式是二进制的。所以让我们以此为起点。现在打开文件并像这样读取它,

$handle = fopen("temp.aco", "rb");

while (!feof($handle))
{
$data = fread($handle, 2);
echo bin2hex($data)."<br/>";
}

这将打开 .aco 文件并读取直到到达文件末尾。通过使用 fread 并将第二个参数设置为 2,您可以从文件中读取 2 个字节的数据。然后你会看到这样的输出,
0001 0008 0000 fafa e2e2 dbdb 0000

现在正在查看您的 other link你会看到第一个数字 0001 代表版本号 0008 代表文件中的颜色数(在我的例子中是 8)然后你的颜色类型通常是 0000 (RGB) 0001 (HSB) 0002 (CMYK) 见其余的颜色转换表。

颜色由 3 或 4 个单词组成,因此有时您可以忽略最后一个单词,它将为零。所以让我们看一个例子,

0000-(RGB类型)fafa-(红色代表0..65535范围)e2e2-(绿色代表0..65535范围)dbdb-(蓝色代表0..65535范围)0000-(这里不需要数据定位为零)

通过将读取的单词转换为 unsigned int 并遵循转换表,您将获得适当的 rgb 值。这是我解析各种类型的代码。
function colorInColorSpace($colorSpace, $w, $x, $y, $z){

// RGB
if($colorSpace==0){
$r = $w/256;
$g = $x/256;
$b = $y/256;
//z component not used in rgb format
print $colorSpace." ".$r." ".$g." ".$b."<br/>";
}
//HSB
else if($colorSpace==1){
$h = $w/182.04;
$s = $x/655.35;
$b = $y/655.35;

print $colorSpace." ".$h." ".$s." ".$b."<br/>";
}
//CYMK
else if($colorSpace==2){
$c = 100 - ($w/655.35);
$m = 100 - ($x/655.35);
$y = 100 - ($y/655.35);
$k = 100 - ($z/655.35);

print $colorSpace." ".$c." ".$m." ".$y." ".$k."<br/>";
}
//Lab
else if($colorSpace==7){
// print $colorSpace." ".bin2hex($w[0])." ".bin2hex($w[1])."<br/>";
}
//Grayscale
else if($colorSpace==8){
$greyscale = $w/39.0625;
print $colorSpace." ".$greyscale."<br/>";
}
//Wide CYMK
else if($colorSpace==9){
$c = $w/100;
$m = $x/100;
$y = $y/100;
$k = $z/100;

print $colorSpace." ".$c." ".$m." ".$y." ".$k."<br/>";
}

}

希望这可以帮助。

关于adobe - 解码adobe颜色文件(*.ACO),需要输入理解语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com