如何在Scala中为(key-image name//value-image file)创建映射

如何在Scala中为(key-image name//value-image file)创建映射,scala,Scala,我有一个目录,我有不同的照片,小尺寸,大尺寸,我已经设法编写了方法:其中一个只提取照片的名称,另一个提取照片的名称。例如,我现在如何将它们组合到地图中,然后使用该方法计算它们的分辨率,如果照片大于(例如)500x500,请在名称中添加前缀并将其保存在X文件夹中。你有什么想法吗?我没有Scala方面的经验,但我非常喜欢这种语言。我了解到,您需要获得图像名称到图像路径的映射。你可以这样做: def getListOfImageNames(dir: String): List[String] =

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

我了解到,您需要获得图像名称到图像路径的映射。你可以这样做:

  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
  }

这里我使用
收集
函数。这就像是
map
filter
函数的组合。在
中收集
模式匹配表达式。若文件匹配模式匹配,它将计算对创建:文件名到文件路径。否则文件将被过滤。使用
toMap
转换
Array[(String,String)]
Map[String,String]
。你可以阅读更多关于
收集

好的,它看起来很不错,我现在会测试它,工作正常,你能告诉我如何使用这张地图吗?e、 g.如何计算每个图像中的所有像素?并将其输出?@SzymonDejewski您可以使用
BuffereImage
类和
getWidth
getHeight
方法,按图像的宽度和长度
过滤贴图:
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
}