package com.dowstats.service.w40k import com.dowstats.configuration.StorageConfig import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.awt.image.BufferedImage import java.io.File import javax.imageio.ImageIO @Service class IconsService @Autowired constructor( val storageConfig: StorageConfig, ) { val log = LoggerFactory.getLogger(IconsService::class.java) /** Конвертирует иконку tga->jpeg и возвращает путь до неё * @param pathToTgaIcon - путь до иконки * @return путь до сконвертированной иконки */ fun convertTgaToJpegImage(iconPathInMod: String, pathToTgaIcon: String): String? { try{ val image: BufferedImage = try { ImageIO.read(File(pathToTgaIcon)) } catch (e: Exception){ ImageIO.read(File(pathToTgaIcon.lowercase())) } val pathToSave = "${storageConfig.iconsStorage.replace("/", File.separator)}${File.separator}${iconPathInMod.replace("\\", File.separator)}.png" val directoryToSave = File(pathToSave.split(File.separator).dropLast(1).joinToString (File.separator)) if(!directoryToSave.exists()) directoryToSave.mkdirs() return if (!ImageIO.write(image, "png", File(pathToSave))) { null } else { pathToSave.replace("${storageConfig.iconsStorage.replace("/", File.separator)}${File.separator}", "") } } catch (e: Exception) { log.warn("Can't convert icon $iconPathInMod", e) return null } } fun returnIcon(raceIconFolder: String, iconName: String): ByteArray? { val pathToIcon = "${storageConfig.iconsStorage.replace("/", File.separator)}${File.separator}$raceIconFolder${File.separator}$iconName" return File(pathToIcon).readBytes() } }