如何在Scala中为(key-imagename//value-image文件)创建映射


def getListOfImageNames(dir: String): List[String] = {
val names = new File(dir)
names.listFiles.filter(_.isFile)
.map(_.getName).toList
}

def getListOfImages(dir: String): List[String] = {
val files = new File(dir)
files.listFiles.filter(_.isFile)
.filter(_.getName.endsWith(".png"))
.filter(_.getName.endsWith(".jpg"))
.map(_.getPath).toList
}

我有一个目录,里面有不同的照片,小尺寸的,大尺寸的,我已经设法写了一些方法:其中一个只提取照片的名字,另一个提取照片的名称。例如,我现在如何将它们组合成一张地图,然后使用该方法计算它们的分辨率,如果照片大于,例如500x500,请在名称中添加前缀并将其保存在X文件夹中。你有什么想法吗?我对Scala没有经验,但我非常喜欢这种语言。

正如我所得到的,您需要获得图像名称到图像路径的映射。你可以这样实现:

def getImagesMap(dirPath: String): Map[String, String] = {
val directory = new File(dirPath)
directory.listFiles.collect{
case file if file.isFile && 
(file.getName.endsWith(".png") ||
file.getName.endsWith(".jpg")) => 
file.getName -> file.getPath
}.toMap
}

这里我使用collect函数。这就像是mapfilter函数的组合。在collect内部有一个模式匹配表达式。如果文件匹配模式匹配,它将评估对的创建:文件名到文件路径。否则,文件将被过滤。在我使用toMapArray[(String, String)]转换为Map[String, String]之后。你可以在这里阅读更多关于collect的信息。

最新更新