diff --git a/build.gradle b/build.gradle index 3bc912f..19588b9 100644 --- a/build.gradle +++ b/build.gradle @@ -63,6 +63,7 @@ dependencies { implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.12.0' implementation 'com.maxmind.geoip2:geoip2:4.2.0' + implementation 'org.sejda.imageio:webp-imageio:0.1.6' implementation project(':referral') diff --git a/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java b/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java index 7b76a76..00d81ff 100644 --- a/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java @@ -25,6 +25,8 @@ import ru.soune.nocopy.service.search.SearchImageService; import ru.soune.nocopy.service.tariff.TariffConstants; import ru.soune.nocopy.service.tariff.TariffInfoService; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -150,7 +152,7 @@ public class ImageFoundRequestHandler implements RequestHandler { String url = image.getUrl(); Path tempFile = null; try { - tempFile = fileUploadService.downloadImageFromUrl(url); + tempFile = convertToSupportedFormat(fileUploadService.downloadImageFromUrl(url)); String filePath = tempFile.toAbsolutePath().toString(); @@ -191,4 +193,18 @@ public class ImageFoundRequestHandler implements RequestHandler { return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), message, finalResponse); } + + public Path convertToSupportedFormat(Path imagePath) throws IOException { + String fileName = imagePath.getFileName().toString().toLowerCase(); + + if (fileName.matches(".*\\.(jpg|jpeg|png|bmp)$")) { + return imagePath; + } + + BufferedImage image = ImageIO.read(imagePath.toFile()); + Path pngFile = Files.createTempFile("converted_", ".png"); + ImageIO.write(image, "PNG", pngFile.toFile()); + + return pngFile; + } }