54 lines
2.0 KiB
Kotlin
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()
|
|
}
|
|
|
|
}
|