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