根据图像类型对图像进行排序,并使用 typescript 将它们放在相应的文件夹中

Posted

技术标签:

【中文标题】根据图像类型对图像进行排序,并使用 typescript 将它们放在相应的文件夹中【英文标题】:Sort images according to their type and put them in a the corresponding folder with typescript 【发布时间】:2020-12-04 09:37:45 【问题描述】:

我想根据图片的类型(好、中、坏)对图片进行排序,然后放到相应的文件夹中。

我的数据是一个带有图片名称+标签的对象

export interface data =  image: string, label: 'good' | 'medium' | 'bad' 
export const DATA: data = 
  image: 'name-of-image-1, label: 'good' 
  image: 'name-of-image-2, label: 'bad' ,
  image: 'name-of-image-3, label: 'good' ,
 ...,
  image: 'name-of-image-n, label: 'medium' 

图片在服务器上,路径例如:smb://test/images/

所以我在 smb://test/images/name-of-image-1 找到了我的第一张图片

我想根据标签映射我的数据并将图像复制到相应的文件夹中。 (将带有“bad”标签的图像放入文件夹./bad。

你有想法用 javascript (node) 做到这一点吗?

【问题讨论】:

一个可能的起点:nodejs.org/api/fs.html 我使用 fs.copyFile 但我有一个错误:[错误:EISDIR:对目录的非法操作,copyfile './package.json' -> './data'] errno: - 21、代码:'EISDIR',系统调用:'copyfile',路径:'./package.json',dest:'./data' 请将此代码也添加到您的问题中。 【参考方案1】:

您提供的代码示例有一些问题在这里解决:

export interface Data 
    image: string,
    label: 'good' | 'medium' | 'bad'


export const data: Data[] = [
     image: 'name-of-image-1', label: 'good' ,
     image: 'name-of-image-2', label: 'bad' ,
     image: 'name-of-image-3', label: 'good' ,
     image: 'name-of-image-n', label: 'medium' 
];

为了解决您的问题,您可以使用.reduce 对图像label 进行相应的分组:

const sorted = data.reduce((prev, current) => (
    ...prev,
    [current.label]: [
        ...prev[current.label],
        current.image
    ]
),  good: [], medium: [], bad: [] );

sorted 的响应如下


    "good": [
        "name-of-image-1",
        "name-of-image-3"
    ],
    "medium": [
        "name-of-image-n"
    ],
    "bad": [
        "name-of-image-2"
    ]

【讨论】:

是的,这部分我成功了,但我不知道如何将图像放入文件夹:/

以上是关于根据图像类型对图像进行排序,并使用 typescript 将它们放在相应的文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

php [WordPress] - 列出图像并通过ajax按术语对它们进行排序

对图像中连通域进行标记并计算面积matlab

使用数据表对图像进行排序

我应该如何对不同方向的图像进行分类?

使用核心动画对图像进行排序,接收内存警告

从照片库加载图像并按日期排序的内存问题