zqy
6 天以前 34233e911cc2abd56b6632bef10ed1445b683917
修改bug
2个文件已修改
54 ■■■■ 已修改文件
ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java
@@ -36,8 +36,6 @@
                        "localhost",
                        8087,
                    "http"
                )
zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java
@@ -225,29 +225,57 @@
    }
    /**
     * 压缩为PNG格式
     * 压缩为PNG格式(兼容性修复)
     */
    private void compressAsPng(BufferedImage image, ByteArrayOutputStream output, int compressionLevel)
        throws IOException {
        Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("png");
        if (!writers.hasNext()) {
            ImageIO.write(image, "png", output);
            // 如果没有PNG编码器,使用默认方式
            boolean written = ImageIO.write(image, "png", output);
            if (!written) {
                throw new IOException("无法写入PNG格式");
            }
            return;
        }
        ImageWriter writer = writers.next();
        ImageWriteParam param = writer.getDefaultWriteParam();
        try {
            ImageWriteParam param = writer.getDefaultWriteParam();
        // PNG的压缩级别(0-9,0最快但压缩率低,9最慢但压缩率高)
        if (compressionLevel >= 0) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            param.setCompressionType("Deflate");
            param.setCompressionQuality(Math.max(0.0f, Math.min(1.0f, compressionLevel / 9.0f)));
            // PNG的压缩级别(0-9,0最快但压缩率低,9最慢但压缩率高)
            if (compressionLevel >= 0) {
                try {
                    // 先检查是否支持压缩模式
                    if (param.canWriteCompressed()) {
                        param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                        // 检查是否支持Deflate压缩类型
                        String[] compressionTypes = param.getCompressionTypes();
                        if (compressionTypes != null) {
                            for (String type : compressionTypes) {
                                if ("Deflate".equalsIgnoreCase(type)) {
                                    param.setCompressionType("Deflate");
                                    break;
                                }
                            }
                        }
                        param.setCompressionQuality(Math.max(0.0f, Math.min(1.0f, compressionLevel / 9.0f)));
                    } else {
                        // 如果不支持压缩,使用默认设置
                        log.debug("PNG编码器不支持压缩设置,使用默认压缩");
                    }
                } catch (UnsupportedOperationException e) {
                    // 捕获不支持的操作异常,继续使用默认设置
                    log.warn("PNG压缩设置不被支持: {}", e.getMessage());
                }
            }
            writer.setOutput(new MemoryCacheImageOutputStream(output));
            writer.write(null, new IIOImage(image, null, null), param);
        } finally {
            writer.dispose();
        }
        writer.setOutput(new MemoryCacheImageOutputStream(output));
        writer.write(null, new IIOImage(image, null, null), param);
        writer.dispose();
    }