java webp图片转jpg


如iphone11手机无法展示从tiktok拉取的webp格式的头像. 解决方法: 把拿到的头像转换成jpg格式, 然后再上传到服务器    

Maven


        
            org.sejda.imageio
            webp-imageio
            0.1.6
        

调用

public String uploadTiktokLogo(String logoUrl) {
        HttpURLConnection conn = null;
        File webpFile = null;
        File jpgFile = null;
        try {
            URL url = new URL(logoUrl);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5*1000);
            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
            InputStream inputStream = conn.getInputStream();
            webpFile = new File(picPath + WavelyStringUtils.getRandomStr() + ".webp");
            FileUtils.copyInputStreamToFile(inputStream, webpFile);

            /* Convert webp to jpg start */
            ImageReader reader = ImageIO.getImageReadersByMIMEType("image/webp").next();
            // configure decoding parameters
            WebPReadParam readParam = new WebPReadParam();
            readParam.setBypassFiltering(true);
            // configure the input on the ImageReader
            reader.setInput(new FileImageInputStream(webpFile));
            // Decode the image
            BufferedImage image = reader.read(0, readParam);
            // "jpg" can be "png" too
            jpgFile = new File(picPath + WavelyStringUtils.getRandomStr() + ".jpg");
            ImageIO.write(image, "jpg", jpgFile);
            /* Convert webp to jpg end */

            FileInputStream fileInputStream = new FileInputStream(jpgFile);
            MultipartFile multipartFile = new MockMultipartFile(jpgFile.getName(), jpgFile.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
            return ((Map) uploadFile(0, multipartFile).getData()).get("fileUrl");
        } catch (Exception e) {
            logger.error("uploadLogo error, logoUrl:{}", logoUrl, e);
        } finally {
            FileUtils.deleteQuietly(webpFile);
            FileUtils.deleteQuietly(jpgFile);
            if(conn != null) conn.disconnect();
        }
        return "";
    }

相关