2025-03-15 21:47:51 +03:00

54 lines
2.0 KiB
Kotlin

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()
}
}