• java webp图片转jpg


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

    Maven

    <!-- https://mvnrepository.com/artifact/org.sejda.imageio/webp-imageio -->
            <dependency>
                <groupId>org.sejda.imageio</groupId>
                <artifactId>webp-imageio</artifactId>
                <version>0.1.6</version>
            </dependency>
    

    调用

    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<String, String>) 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 "";
        }
    
  • 相关阅读:
    转载:QTableView中嵌入可视化组件
    pyqt声音输入
    pyqt二进制和图片的转换
    LeetCode(92):反转链表 II
    LeetCode(91):解码方法
    LeetCode(90):子集 II
    LeetCode(89):格雷编码
    LeetCode(88):合并两个有序数组
    LeetCode(87):扰乱字符串
    LeetCode(86):分隔链表
  • 原文地址:https://www.cnblogs.com/wmxl/p/15853938.html
Copyright © 2020-2023  润新知