javax.imageio.ImageWriteParam#canWriteCompressed ( )源码实例Demo

下面列出了javax.imageio.ImageWriteParam#canWriteCompressed ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: MyBox   文件: ImageFileWriters.java
public static ImageWriteParam getWriterParam(ImageAttributes attributes,
        ImageWriter writer) {
    try {
        ImageWriteParam param = writer.getDefaultWriteParam();
        if (param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (attributes != null && attributes.getCompressionType() != null) {
                param.setCompressionType(attributes.getCompressionType());
            } else {
                String[] compressionTypes = param.getCompressionTypes();
                if (compressionTypes != null) {
                    param.setCompressionType(compressionTypes[0]);
                }
            }
            if (attributes != null && attributes.getQuality() > 0) {
                param.setCompressionQuality(attributes.getQuality() / 100.0f);
            } else {
                param.setCompressionQuality(1.0f);
            }
        }
        return param;
    } catch (Exception e) {
        logger.error(e.toString());
        return null;
    }
}
 
源代码2 项目: MyBox   文件: ImageGifFile.java
public static ImageWriteParam getPara(ImageAttributes attributes,
        ImageWriter writer) {
    try {
        ImageWriteParam param = writer.getDefaultWriteParam();
        if (param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (attributes != null && attributes.getCompressionType() != null) {
                param.setCompressionType(attributes.getCompressionType());
            }
            if (attributes != null && attributes.getQuality() > 0) {
                param.setCompressionQuality(attributes.getQuality() / 100.0f);
            } else {
                param.setCompressionQuality(1.0f);
            }
        }
        return param;
    } catch (Exception e) {
        logger.error(e.toString());
        return null;
    }
}
 
源代码3 项目: MyBox   文件: ImagePnmFile.java
public static ImageWriteParam getPara(ImageAttributes attributes, ImageWriter writer) {
    try {
        ImageWriteParam param = writer.getDefaultWriteParam();
        if (param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (attributes != null && attributes.getCompressionType() != null) {
                param.setCompressionType(attributes.getCompressionType());
            }
            if (attributes != null && attributes.getQuality() > 0) {
                param.setCompressionQuality(attributes.getQuality() / 100.0f);
            } else {
                param.setCompressionQuality(1.0f);
            }
        }
        return param;
    } catch (Exception e) {
        logger.error(e.toString());
        return null;
    }
}
 
源代码4 项目: MyBox   文件: ImagePngFile.java
public static ImageWriteParam getPara(ImageAttributes attributes, ImageWriter writer) {
    try {
        ImageWriteParam param = writer.getDefaultWriteParam();
        if (param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (attributes != null && attributes.getCompressionType() != null) {
                param.setCompressionType(attributes.getCompressionType());
            }
            if (attributes != null && attributes.getQuality() > 0) {
                param.setCompressionQuality(attributes.getQuality() / 100.0f);
            } else {
                param.setCompressionQuality(1.0f);
            }
        }
        return param;
    } catch (Exception e) {
        logger.error(e.toString());
        return null;
    }
}
 
源代码5 项目: MyBox   文件: ImageJpgFile.java
public static ImageWriteParam getPara(ImageAttributes attributes, ImageWriter writer) {
    try {
        ImageWriteParam param = writer.getDefaultWriteParam();
        if (param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (attributes != null && attributes.getCompressionType() != null) {
                param.setCompressionType(attributes.getCompressionType());
            }
            if (attributes != null && attributes.getQuality() > 0) {
                param.setCompressionQuality(attributes.getQuality() / 100.0f);
            } else {
                param.setCompressionQuality(1.0f);
            }
        }
        return param;
    } catch (Exception e) {
        logger.error(e.toString());
        return null;
    }
}
 
源代码6 项目: MyBox   文件: ImageTiffFile.java
public static ImageWriteParam getPara(ImageAttributes attributes, ImageWriter writer) {
    try {
        ImageWriteParam param = writer.getDefaultWriteParam();
        if (param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (attributes != null && attributes.getCompressionType() != null) {
                param.setCompressionType(attributes.getCompressionType());
            } else {
                param.setCompressionType("LZW");
            }
            if (attributes != null && attributes.getQuality() > 0) {
                param.setCompressionQuality(attributes.getQuality() / 100.0f);
            } else {
                param.setCompressionQuality(1.0f);
            }
        }
        return param;
    } catch (Exception e) {
        logger.error(e.toString());
        return null;
    }
}
 
源代码7 项目: logbook-kai   文件: ScreenCapture.java
/**
 * BufferedImageをJPEG形式にエンコードします
 *
 * @param image BufferedImage
 * @return JPEG形式の画像
 * @throws IOException 入出力例外
 */
static byte[] encodeJpeg(BufferedImage image) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    try (ImageOutputStream ios = ImageIO.createImageOutputStream(out)) {
        ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
        try {
            ImageWriteParam iwp = writer.getDefaultWriteParam();
            if (iwp.canWriteCompressed()) {
                iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                iwp.setCompressionQuality(QUALITY);
            }
            writer.setOutput(ios);
            writer.write(null, new IIOImage(image, null, null), iwp);
        } finally {
            writer.dispose();
        }
    }
    return out.toByteArray();
}
 
源代码8 项目: olat   文件: ImageHelper.java
private static ImageWriteParam getOptimizedImageWriteParam(ImageWriter writer, Size scaledSize) {
    ImageWriteParam iwp = writer.getDefaultWriteParam();
    try {
        if (iwp.canWriteCompressed()) {
            iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            int maxSize = Math.max(scaledSize.getWidth(), scaledSize.getHeight());
            if (maxSize <= 50) {
                iwp.setCompressionQuality(0.95f);
            } else if (maxSize <= 100) {
                iwp.setCompressionQuality(0.90f);
            } else if (maxSize <= 200) {
                iwp.setCompressionQuality(0.85f);
            } else if (maxSize <= 500) {
                iwp.setCompressionQuality(0.80f);
            } else {
                iwp.setCompressionQuality(0.75f);
            }
        }
    } catch (Exception e) {
        // bmp can be compressed but don't allow it!!!
        return writer.getDefaultWriteParam();
    }
    return iwp;
}
 
源代码9 项目: olat   文件: ImageHelper.java
private static ImageWriteParam getOptimizedImageWriteParam(ImageWriter writer, Size scaledSize) {
    ImageWriteParam iwp = writer.getDefaultWriteParam();
    try {
        if (iwp.canWriteCompressed()) {
            iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            int maxSize = Math.max(scaledSize.getWidth(), scaledSize.getHeight());
            if (maxSize <= 50) {
                iwp.setCompressionQuality(0.95f);
            } else if (maxSize <= 100) {
                iwp.setCompressionQuality(0.90f);
            } else if (maxSize <= 200) {
                iwp.setCompressionQuality(0.85f);
            } else if (maxSize <= 500) {
                iwp.setCompressionQuality(0.80f);
            } else {
                iwp.setCompressionQuality(0.75f);
            }
        }
    } catch (Exception e) {
        // bmp can be compressed but don't allow it!!!
        return writer.getDefaultWriteParam();
    }
    return iwp;
}
 
源代码10 项目: java-tool   文件: Img.java
public void writeTo(OutputStream os, String mimeType) {
    ImageWriter writer = ImageIO.getImageWritersByMIMEType(mimeType(mimeType)).next();
    dropAlphaChannelIfJPEG(writer);
    ImageWriteParam params = writer.getDefaultWriteParam();

    if (!Float.isNaN(compressionQuality) && params.canWriteCompressed()) {
        params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        params.setCompressionType(params.getCompressionTypes()[0]);
        params.setCompressionQuality(compressionQuality);
    }

    ImageOutputStream ios = os(os);
    writer.setOutput(ios);
    IIOImage image = new IIOImage(get(), null, null);
    try {
        writer.write(null, image, params);
    } catch (IOException e) {
        throw ioException(e);
    }
    IO.flush(ios);
    writer.dispose();
}
 
源代码11 项目: logbook-kai   文件: ImageListener.java
/**
 * 画像をjpeg形式で再圧縮します。
 *
 * @param in InputStream
 * @return InputStream
 */
private InputStream compressImage(InputStream in) {
    try {
        BufferedImage image = ImageIO.read(in);

        int width = image.getWidth();
        int height = image.getHeight();

        BufferedImage canvas = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
        Graphics gc = canvas.createGraphics();
        gc.setColor(Color.WHITE);
        gc.fillRect(0, 0, width, height);
        gc.drawImage(image, 0, 0, null);

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        try (ImageOutputStream ios = ImageIO.createImageOutputStream(out)) {
            ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
            try {

                ImageWriteParam iwp = writer.getDefaultWriteParam();
                if (iwp.canWriteCompressed()) {
                    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                    iwp.setCompressionQuality(0.8f);
                }
                writer.setOutput(ios);
                writer.write(null, new IIOImage(canvas, null, null), iwp);
            } finally {
                writer.dispose();
            }
        }
        return new ByteArrayInputStream(out.toByteArray());
    } catch (Exception e) {
        return null;
    }
}
 
源代码12 项目: openjdk-jdk9   文件: ImageWriterCompressionTest.java
public static void main(String[] args) {
    Locale.setDefault(Locale.US);

    final BufferedImage image
        = new BufferedImage(512, 512, BufferedImage.TYPE_INT_ARGB);

    final Graphics2D g2d = image.createGraphics();
    try {
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                             RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
                             RenderingHints.VALUE_RENDER_QUALITY);
        g2d.scale(2.0, 2.0);

        g2d.setColor(Color.red);
        g2d.draw(new Rectangle2D.Float(10, 10, 100, 100));
        g2d.setColor(Color.blue);
        g2d.fill(new Rectangle2D.Float(12, 12, 98, 98));
        g2d.setColor(Color.green);
        g2d.setFont(new Font(Font.SERIF, Font.BOLD, 14));

        for (int i = 0; i < 15; i++) {
            g2d.drawString("Testing Compression ...", 20, 20 + i * 16);
        }

        final String[] fileSuffixes = ImageIO.getWriterFileSuffixes();

        final Set<String> testedWriterClasses = new HashSet<String>();

        for (String suffix : fileSuffixes) {

            if (!IGNORE_FILE_SUFFIXES.contains(suffix)) {
                final Iterator<ImageWriter> itWriters
                    = ImageIO.getImageWritersBySuffix(suffix);

                final ImageWriter writer;
                final ImageWriteParam writerParams;

                if (itWriters.hasNext()) {
                    writer = itWriters.next();

                    if (testedWriterClasses.add(writer.getClass().getName())) {
                        writerParams = writer.getDefaultWriteParam();

                        if (writerParams.canWriteCompressed()) {
                            testCompression(image, writer, writerParams, suffix);
                        }
                    }
                } else {
                    throw new RuntimeException("Unable to get writer !");
                }
            }
        }
    } catch (IOException ioe) {
        throw new RuntimeException("IO failure", ioe);
    }
    finally {
        g2d.dispose();
    }
}
 
源代码13 项目: logbook   文件: CaptureDialog.java
@Override
public void run() {
    try {
        // 時刻からファイル名を作成
        Date now = Calendar.getInstance().getTime();

        // 範囲をキャプチャする
        BufferedImage image = AwtUtils.getCapture(this.rectangle);

        String dir = AppConfig.get().getCapturePath();
        String name = this.fileNameFormat.format(now) + "." + AppConfig.get().getImageFormat();
        Path path = Paths.get(dir, name);

        File file = path.toFile();

        if (file.exists()) {
            if (file.isDirectory()) {
                throw new IOException("File '" + file + "' exists but is a directory");
            }
            if (!(file.canWrite()))
                throw new IOException("File '" + file + "' cannot be written to");
        } else {
            File parent = file.getParentFile();
            if ((parent != null) &&
                    (!(parent.mkdirs())) && (!(parent.isDirectory()))) {
                throw new IOException("Directory '" + parent + "' could not be created");
            }
        }

        if (image != null) {

            try (ImageOutputStream ios = ImageIO.createImageOutputStream(file)) {
                ImageWriter writer = ImageIO.getImageWritersByFormatName(AppConfig.get().getImageFormat())
                        .next();
                try {
                    ImageWriteParam iwp = writer.getDefaultWriteParam();
                    if (iwp.canWriteCompressed()) {
                        iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                        iwp.setCompressionQuality(QUALITY);
                    }
                    writer.setOutput(ios);

                    if (this.trimRect == null) {
                        this.trimRect = AwtUtils.getTrimSize(image);
                    }

                    writer.write(null, new IIOImage(AwtUtils.trim(image, this.trimRect), null, null), iwp);
                } finally {
                    writer.dispose();
                }
            }
        }
    } catch (Exception e) {
        LoggerHolder.LOG.warn("キャプチャ中に例外が発生しました", e);
    }
}