首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从dm-script中的长字符串数据中获取图像

如何从dm-script中的长字符串数据中获取图像
EN

Stack Overflow用户
提问于 2021-05-18 15:14:35
回答 1查看 95关注 0票数 1

我想从字符串数据数组中获取图像数据。下面的脚本运行良好,但是速度很低。(字符串数据的实际长度比下面的示例要长得多。)我猜for循环中的像素寻址将花费一段时间。

代码语言:javascript
复制
image str2img(string str)
{
    image img:=RealImage("",4,10,1)
    string tempstr=str
    for(number i=0;i<10;i++)
    {
        if(find(tempstr,",")!=-1)
        {
            img[i,0]=tempstr.left(find(tempstr,",")).val()
            tempstr=tempstr.right(tempstr.len()-find(tempstr,",")-1)
            result(tempstr+"\n")
        }else
        {
            img[i,0]=tempstr.val()
        }
    }
    return img
}

string input="1,2,3,4,5,6,7,8,9,10"
image output=str2img(input)
output.showimage()

然后,我编写了以下脚本来使用流。然而,我得到了错误按摩‘非数字文本遇到’。

代码语言:javascript
复制
image str2img(string str)
{
    TagGroup Tg=NewTagGroup()
    Tg.TagGroupSetTagAsString("data",str)
    
    object fstream=NewStreamFromBuffer(0)
    TagGroupWriteTagDataToStream(Tg,"data",fstream,0)
    fstream.StreamSetPos(0,0)

    number bLinesAreRows=1
    number bSizeByCount=1 
    number dtype=2 //2 for real4 (float)
    object imgSizeObj = Alloc( "ImageData_ImageDataSize" )
    image img := ImageImportTextData( "Imag Name " , fstream , dtype , imgSizeObj , bLinesAreRows , bSizeByCount )
    return img
}

string input="1,2,3,4,5,6,7,8,9,10"
image output=str2img(input)
output.showimage()

"ImageImportTextData()“函数仅对读取保存的文件有效吗?

或者有什么有效的方法从长字符串数据中获取图像?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 20:26:13

很好的问题,我喜欢你的方式。不,ImageImportTextData()适用于任何流,如您在下面的示例中所看到的。然而,如果您想让文本行计数,则该命令需要用换行来最后确定文本行,而字符串标记流似乎存在一个问题。我从不使用它,因为有专门的命令来流文本。

因此,您的固定脚本看起来如下:

代码语言:javascript
复制
image str2img(string str)
{
    object fstream=NewStreamFromBuffer(0)
    fStream.StreamWriteAsText(0,str)  // Write text to stream directly
    fstream.StreamSetPos(0,0)

    number bLinesAreRows=1
    number bSizeByCount=1 
    number dtype=2 //2 for real4 (float)
    object imgSizeObj = Alloc( "ImageData_ImageDataSize" )
    
    image img := ImageImportTextData( "Imag Name " , fstream , dtype , imgSizeObj , bLinesAreRows , bSizeByCount )
    return img
}

string input="1,2,3,4,5,6,7,8,9,10\n" // Note final line-break if you want to count.
image output=str2img(input)
output.showimage()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67589122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档