【问题标题】:Read binary file with extendscript使用extendscript读取二进制文件
【发布时间】:2020-11-11 06:51:56
【问题描述】:

仅限于在 Photoshop 中使用 Extendscript 我试图在同一个二进制文件中写入然后读取。 我可以写文件没问题,但我不确定读取部分哪里出错了。

数据将是十六进制的 RGB 颜色,所以我要么想从读取函数中返回数据作为数组或字符串。只有我什至无法告诉我刚刚写入的文件存在。而且我不确定我应该使用 seek() 还是 read()。困惑。

var f = new File("D:\\temp\\bin.act");

var w = write_binary(f);
var r = read_binary(w); 

alert(r);

function write_binary(afile)
{
  afile.encoding = "BINARY";
  afile.open ("w");

  for(i = 0; i < 256; i++)
  {
    afile.write(String.fromCharCode (i));
  }

  afile.close();
}


function read_binary(afile)
{
  var f = new File(afile);
  f.open("r");
  f.encoding = "BINARY";

  //var data = f.read();
  //if(f.exists) alert(afile);
  //alert (data);

  var arr = [];
  for (var i = 0; i < f.length; i+=4)
  {
    f.seek(i, 0);
    var hex = f.readch().charCodeAt(0).toString(16);
    if(hex.length === 1) hex = "0" + hex;
    arr.push(hex);
  }
  return arr;
}

【问题讨论】:

  • 看起来您没有从写入函数返回文件,但仍想将其保存到 var w 中,然后您又想在读取函数中使用该文件。那是行不通的,因为w 只是未定义。
  • @mdomino 我知道我现在哪里出错了。感谢您指出这一点。
  • 嗨,很抱歉有一个问题,但我想知道,你如何处理这样的事情?我也是一名艺术家,我什至不知道从哪里开始阅读二进制文件。假设我想从 abr 文件中提取特定画笔的 png。我该如何学习如何做到这一点..?
  • 当我发现时,我会告诉你的。 @SergeyKritskiy 曾经有几个实用程序可以将 abr 转换为 png/tiff,abrMate 就是其中之一。

标签: binary photoshop extendscript photoshop-script


【解决方案1】:

你可以这样读:

// Open binary file
var afile = "/Users/mark/StackOverflow/data.bin"
var f = new File(afile);
f.open("r");
f.encoding = "BINARY";
alert('OK');

var hexstring=""
while (true){
    var b = f.readch().charCodeAt(0);
    if(f.eof){break;}
    var hex = b.toString(16);
    if(hex.length === 1) hex = "0" + hex;
    hexstring += hex;
}
alert(hexstring);

这个答案对应的写作部分是here

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2019-04-13
    • 2012-09-11
    • 2019-09-25
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多