Example usage for javax.imageio ImageIO getWriterFormatNames

List of usage examples for javax.imageio ImageIO getWriterFormatNames

Introduction

In this page you can find the example usage for javax.imageio ImageIO getWriterFormatNames.

Prototype

public static String[] getWriterFormatNames() 

Source Link

Document

Returns an array of String s listing all of the informal format names understood by the current set of registered writers.

Usage

From source file:ShowImageIOInfo.java

static public void main(String args[]) throws Exception {
    String names[] = ImageIO.getReaderFormatNames();
    for (int i = 0; i < names.length; ++i) {
        System.out.println("reader " + names[i]);
    }/*w  w w.  j  a v a 2  s  . c o m*/

    names = ImageIO.getWriterFormatNames();
    for (int i = 0; i < names.length; ++i) {
        System.out.println("writer " + names[i]);
    }
}

From source file:Main.java

public static void main(String[] args) {
    String[] readers, writers;/*from   w  w w.  ja  v a  2 s .  co  m*/

    System.out.println("For Reading:");
    readers = ImageIO.getReaderFormatNames();
    System.out.println("\tBy format:");
    for (int i = 0; i < readers.length; i++)
        System.out.println("\t\t" + readers[i]);

    readers = ImageIO.getReaderMIMETypes();
    System.out.println("\tBy MIME Types:");
    for (int i = 0; i < readers.length; i++)
        System.out.println("\t\t" + readers[i]);

    System.out.println("For Writing:");
    writers = ImageIO.getWriterFormatNames();
    System.out.println("\tBy format:");
    for (int i = 0; i < writers.length; i++)
        System.out.println("\t\t" + writers[i]);

    writers = ImageIO.getWriterMIMETypes();
    System.out.println("\tBy MIME Types:");
    for (int i = 0; i < writers.length; i++)
        System.out.println("\t\t" + writers[i]);
}

From source file:com.opopov.cloud.image.service.Validator.java

public Validator() {
    supportedImageWriteFormats.addAll(Arrays.asList(ImageIO.getWriterFormatNames()));
}

From source file:info.magnolia.module.imaging.tools.ImageIOPluginsPage.java

public Collection<String> getOutputFormatNames() {
    return filter(ImageIO.getWriterFormatNames());
}

From source file:SaveImage.java

public String[] getFormats() {
    String[] formats = ImageIO.getWriterFormatNames();
    TreeSet<String> formatSet = new TreeSet<String>();
    for (String s : formats) {
        formatSet.add(s.toLowerCase());/*from  w  ww.  j  a  v a  2  s .  com*/
    }
    return formatSet.toArray(new String[0]);
}

From source file:com.chiorichan.factory.event.PostImageProcessor.java

@EventHandler()
public void onEvent(PostEvalEvent event) {
    try {//from www. j a v  a2s.  c  om
        if (event.context().contentType() == null
                || !event.context().contentType().toLowerCase().startsWith("image"))
            return;

        float x = -1;
        float y = -1;

        boolean cacheEnabled = AppConfig.get().getBoolean("advanced.processors.imageProcessorCache", true);
        boolean grayscale = false;

        ScriptingContext context = event.context();
        HttpRequestWrapper request = context.request();
        Map<String, String> rewrite = request.getRewriteMap();

        if (rewrite != null) {
            if (rewrite.get("serverSideOptions") != null) {
                String[] params = rewrite.get("serverSideOptions").trim().split("_");

                for (String p : params)
                    if (p.toLowerCase().startsWith("width") && x < 0)
                        x = Integer.parseInt(p.substring(5));
                    else if ((p.toLowerCase().startsWith("x") || p.toLowerCase().startsWith("w"))
                            && p.length() > 1 && x < 0)
                        x = Integer.parseInt(p.substring(1));
                    else if (p.toLowerCase().startsWith("height") && y < 0)
                        y = Integer.parseInt(p.substring(6));
                    else if ((p.toLowerCase().startsWith("y") || p.toLowerCase().startsWith("h"))
                            && p.length() > 1 && y < 0)
                        y = Integer.parseInt(p.substring(1));
                    else if (p.toLowerCase().equals("thumb")) {
                        x = 150;
                        y = 0;
                        break;
                    } else if (p.toLowerCase().equals("bw") || p.toLowerCase().equals("grayscale"))
                        grayscale = true;
            }

            if (request.getArgument("width") != null && request.getArgument("width").length() > 0)
                x = request.getArgumentInt("width");

            if (request.getArgument("height") != null && request.getArgument("height").length() > 0)
                y = request.getArgumentInt("height");

            if (request.getArgument("w") != null && request.getArgument("w").length() > 0)
                x = request.getArgumentInt("w");

            if (request.getArgument("h") != null && request.getArgument("h").length() > 0)
                y = request.getArgumentInt("h");

            if (request.getArgument("thumb") != null) {
                x = 150;
                y = 0;
            }

            if (request.hasArgument("bw") || request.hasArgument("grayscale"))
                grayscale = true;
        }

        // Tests if our Post Processor can process the current image.
        List<String> readerFormats = Arrays.asList(ImageIO.getReaderFormatNames());
        List<String> writerFormats = Arrays.asList(ImageIO.getWriterFormatNames());
        if (context.contentType() != null
                && !readerFormats.contains(context.contentType().split("/")[1].toLowerCase()))
            return;

        int inx = event.context().buffer().readerIndex();
        BufferedImage img = ImageIO.read(new ByteBufInputStream(event.context().buffer()));
        event.context().buffer().readerIndex(inx);

        if (img == null)
            return;

        float w = img.getWidth();
        float h = img.getHeight();
        float w1 = w;
        float h1 = h;

        if (x < 1 && y < 1) {
            x = w;
            y = h;
        } else if (x > 0 && y < 1) {
            w1 = x;
            h1 = x * (h / w);
        } else if (y > 0 && x < 1) {
            w1 = y * (w / h);
            h1 = y;
        } else if (x > 0 && y > 0) {
            w1 = x;
            h1 = y;
        }

        boolean resize = w1 > 0 && h1 > 0 && w1 != w && h1 != h;
        boolean argb = request.hasArgument("argb") && request.getArgument("argb").length() == 8;

        if (!resize && !argb && !grayscale)
            return;

        // Produce a unique encapsulated id based on this image processing request
        String encapId = SecureFunc.md5(context.filename() + w1 + h1 + request.getArgument("argb") + grayscale);
        File tmp = context.site() == null ? AppConfig.get().getDirectoryCache()
                : context.site().directoryTemp();
        File file = new File(tmp, encapId + "_" + new File(context.filename()).getName());

        if (cacheEnabled && file.exists()) {
            event.context().resetAndWrite(FileUtils.readFileToByteArray(file));
            return;
        }

        Image image = resize ? img.getScaledInstance(Math.round(w1), Math.round(h1),
                AppConfig.get().getBoolean("advanced.processors.useFastGraphics", true) ? Image.SCALE_FAST
                        : Image.SCALE_SMOOTH)
                : img;

        // TODO Report malformed parameters to user

        if (argb) {
            FilteredImageSource filteredSrc = new FilteredImageSource(image.getSource(),
                    new RGBColorFilter((int) Long.parseLong(request.getArgument("argb"), 16)));
            image = Toolkit.getDefaultToolkit().createImage(filteredSrc);
        }

        BufferedImage rtn = new BufferedImage(Math.round(w1), Math.round(h1), img.getType());
        Graphics2D graphics = rtn.createGraphics();
        graphics.drawImage(image, 0, 0, null);
        graphics.dispose();

        if (grayscale) {
            ColorConvertOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
            op.filter(rtn, rtn);
        }

        if (resize)
            Log.get().info(EnumColor.GRAY + "Resized image from " + Math.round(w) + "px by " + Math.round(h)
                    + "px to " + Math.round(w1) + "px by " + Math.round(h1) + "px");

        if (rtn != null) {
            ByteArrayOutputStream bs = new ByteArrayOutputStream();

            if (context.contentType() != null
                    && writerFormats.contains(context.contentType().split("/")[1].toLowerCase()))
                ImageIO.write(rtn, context.contentType().split("/")[1].toLowerCase(), bs);
            else
                ImageIO.write(rtn, "png", bs);

            if (cacheEnabled && !file.exists())
                FileUtils.writeByteArrayToFile(file, bs.toByteArray());

            event.context().resetAndWrite(bs.toByteArray());
        }
    } catch (Throwable e) {
        e.printStackTrace();
    }

    return;
}

From source file:com.aimluck.eip.message.MessageRoomFormData.java

/**
 * //from   w  w  w.j a v  a  2 s  . c om
 * @param rundata
 * @param context
 * @param msgList
 * @return
 */
@Override
protected boolean setFormData(RunData rundata, Context context, List<String> msgList)
        throws ALPageNotFoundException, ALDBErrorException {

    boolean res = super.setFormData(rundata, context, msgList);

    if (res) {
        try {

            String memberNames[] = rundata.getParameters().getStrings("member_to");
            memberList.clear();
            if (memberNames != null && memberNames.length > 0) {
                SelectQuery<TurbineUser> query = Database.query(TurbineUser.class);
                Expression exp = ExpressionFactory.inExp(TurbineUser.LOGIN_NAME_PROPERTY, memberNames);
                query.setQualifier(exp);
                memberList.addAll(ALEipUtils.getUsersFromSelectQuery(query));
            }
            if (memberList.size() == 0) {
                memberList.add(login_user);
            }

            List<FileuploadLiteBean> fileBeanList = FileuploadUtils.getFileuploadList(rundata);
            if (fileBeanList != null && fileBeanList.size() > 0) {
                filebean = fileBeanList.get(0);
                if (filebean.getFileId() != 0) {
                    String[] acceptExts = ImageIO.getWriterFormatNames();
                    facePhoto = null;
                    ShrinkImageSet bytesShrinkFilebean = FileuploadUtils.getBytesShrinkFilebean(
                            Database.getDomainName(), folderName, ALEipUtils.getUserId(rundata), filebean,
                            acceptExts, FileuploadUtils.DEF_THUMBNAIL_WIDTH,
                            FileuploadUtils.DEF_THUMBNAIL_HEIGHT, msgList, false);
                    if (bytesShrinkFilebean != null) {
                        facePhoto = bytesShrinkFilebean.getShrinkImage();
                    }
                    facePhoto_smartphone = null;
                    ShrinkImageSet bytesShrinkFilebean2 = FileuploadUtils.getBytesShrinkFilebean(
                            Database.getDomainName(), folderName, ALEipUtils.getUserId(rundata), filebean,
                            acceptExts, FileuploadUtils.DEF_THUMBNAIL_WIDTH_SMARTPHONE,
                            FileuploadUtils.DEF_THUMBNAIL_HEIGHT_SMARTPHONE, msgList, false);
                    if (bytesShrinkFilebean2 != null) {
                        facePhoto_smartphone = bytesShrinkFilebean2.getShrinkImage();
                    }
                } else {
                    facePhoto = null;
                    facePhoto_smartphone = null;
                }
            }
        } catch (Exception ex) {
            logger.error("MessageRoomFormData.setFormData", ex);
        }
    }
    return res;
}

From source file:ImageIOTest.java

/**
 * Gets a set of "preferred" format names of all image writers. The preferred format name is the
 * first format name that a writer specifies.
 * @return the format name set/*from  w  w  w . j av  a 2s .  c o m*/
 */
public static Set<String> getWriterFormats() {
    TreeSet<String> writerFormats = new TreeSet<String>();
    TreeSet<String> formatNames = new TreeSet<String>(Arrays.asList(ImageIO.getWriterFormatNames()));
    while (formatNames.size() > 0) {
        String name = formatNames.iterator().next();
        Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(name);
        ImageWriter writer = iter.next();
        String[] names = writer.getOriginatingProvider().getFormatNames();
        String format = names[0];
        if (format.equals(format.toLowerCase()))
            format = format.toUpperCase();
        writerFormats.add(format);
        formatNames.removeAll(Arrays.asList(names));
    }
    return writerFormats;
}

From source file:com.ackpdfbox.app.imageio.ImageIOUtil.java

/**
 * Writes a buffered image to a file using the given image format.
 * Compression is fixed for PNG, GIF, BMP and WBMP, dependent of the quality
 * parameter for JPG, and dependent of bit count for TIFF (a bitonal image
 * will be compressed with CCITT G4, a color image with LZW). Creating a
 * TIFF image is only supported if the jai_imageio library is in the class
 * path.//from  w w w.j av  a  2s.  c  o m
 *
 * @param image the image to be written
 * @param formatName the target format (ex. "png")
 * @param output the output stream to be used for writing
 * @param dpi the resolution in dpi (dots per inch) to be used in metadata
 * @param quality quality to be used when compressing the image (0 &lt;
 * quality &lt; 1.0f)
 * @return true if the image file was produced, false if there was an error.
 * @throws IOException if an I/O error occurs
 */
public static boolean writeImage(BufferedImage image, String formatName, OutputStream output, int dpi,
        float quality) throws IOException {
    ImageOutputStream imageOutput = null;
    ImageWriter writer = null;
    try {
        // find suitable image writer
        Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(formatName);
        ImageWriteParam param = null;
        IIOMetadata metadata = null;
        // Loop until we get the best driver, i.e. one that supports
        // setting dpi in the standard metadata format; however we'd also 
        // accept a driver that can't, if a better one can't be found
        while (writers.hasNext()) {
            if (writer != null) {
                writer.dispose();
            }
            writer = writers.next();
            param = writer.getDefaultWriteParam();
            metadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(image), param);
            if (metadata != null && !metadata.isReadOnly() && metadata.isStandardMetadataFormatSupported()) {
                break;
            }
        }
        if (writer == null) {
            LOG.error("No ImageWriter found for '" + formatName + "' format");
            StringBuilder sb = new StringBuilder();
            String[] writerFormatNames = ImageIO.getWriterFormatNames();
            for (String fmt : writerFormatNames) {
                sb.append(fmt);
                sb.append(' ');
            }
            LOG.error("Supported formats: " + sb);
            return false;
        }

        // compression
        if (param != null && param.canWriteCompressed()) {
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            if (formatName.toLowerCase().startsWith("tif")) {
                // TIFF compression
                TIFFUtil.setCompressionType(param, image);
            } else {
                param.setCompressionType(param.getCompressionTypes()[0]);
                param.setCompressionQuality(quality);
            }
        }

        if (formatName.toLowerCase().startsWith("tif")) {
            // TIFF metadata
            TIFFUtil.updateMetadata(metadata, image, dpi);
        } else if ("jpeg".equals(formatName.toLowerCase()) || "jpg".equals(formatName.toLowerCase())) {
            // This segment must be run before other meta operations,
            // or else "IIOInvalidTreeException: Invalid node: app0JFIF"
            // The other (general) "meta" methods may not be used, because
            // this will break the reading of the meta data in tests
            JPEGUtil.updateMetadata(metadata, dpi);
        } else {
            // write metadata is possible
            if (metadata != null && !metadata.isReadOnly() && metadata.isStandardMetadataFormatSupported()) {
                setDPI(metadata, dpi, formatName);
            }
        }

        // write
        imageOutput = ImageIO.createImageOutputStream(output);
        writer.setOutput(imageOutput);
        writer.write(null, new IIOImage(image, null, metadata), param);
    } finally {
        if (writer != null) {
            writer.dispose();
        }
        if (imageOutput != null) {
            imageOutput.close();
        }
    }
    return true;
}

From source file:com.aimluck.eip.wiki.util.WikiFileUtils.java

public static boolean insertFileDataDelegate(RunData rundata, Context context, EipTWiki wiki,
        List<FileuploadLiteBean> fileuploadList, String folderName, List<String> msgList) {
    if (fileuploadList == null || fileuploadList.size() <= 0) {
        fileuploadList = new ArrayList<FileuploadLiteBean>();
    }/*  w  ww  .j  a  va 2s.co m*/

    int uid = ALEipUtils.getUserId(rundata);
    String orgId = Database.getDomainName();

    List<Integer> hadfileids = new ArrayList<Integer>();
    for (FileuploadLiteBean file : fileuploadList) {
        if (!file.isNewFile()) {
            hadfileids.add(file.getFileId());
        }
    }

    SelectQuery<EipTWikiFile> dbquery = Database.query(EipTWikiFile.class);
    dbquery.andQualifier(ExpressionFactory.matchExp(EipTWikiFile.WIKI_ID_PROPERTY, wiki.getWikiId()));
    List<EipTWikiFile> existsFiles = dbquery.fetchList();
    List<EipTWikiFile> delFiles = new ArrayList<EipTWikiFile>();
    for (EipTWikiFile file : existsFiles) {
        if (!hadfileids.contains(file.getFileId())) {
            delFiles.add(file);
        }
    }

    // ??????
    if (delFiles.size() > 0) {
        int delsize = delFiles.size();
        for (int i = 0; i < delsize; i++) {
            ALStorageService
                    .deleteFile(WikiFileUtils.getSaveDirPath(orgId, uid) + (delFiles.get(i)).getFilePath());
        }
        // ??
        Database.deleteAll(delFiles);
    }

    // ?
    try {
        for (FileuploadLiteBean filebean : fileuploadList) {
            if (!filebean.isNewFile()) {
                continue;
            }

            // ??
            String[] acceptExts = ImageIO.getWriterFormatNames();
            ShrinkImageSet shrinkImageSet = FileuploadUtils.getBytesShrinkFilebean(orgId, folderName, uid,
                    filebean, acceptExts, FileuploadUtils.DEF_THUMBNAIL_WIDTH,
                    FileuploadUtils.DEF_THUMBNAIL_HEIGHT, msgList, true);

            String filename = "0_" + String.valueOf(System.nanoTime());

            // ?
            EipTWikiFile file = Database.create(EipTWikiFile.class);
            // 
            file.setOwnerId(Integer.valueOf(uid));
            // ID
            file.setEipTWiki(wiki);
            // ??
            file.setFileName(filebean.getFileName());
            // 
            file.setFilePath(WikiFileUtils.getRelativePath(filename));
            // ??
            if (shrinkImageSet != null && shrinkImageSet.getShrinkImage() != null) {
                file.setFileThumbnail(shrinkImageSet.getShrinkImage());
            }
            // ?
            file.setCreateDate(Calendar.getInstance().getTime());
            // 
            file.setUpdateDate(Calendar.getInstance().getTime());

            if (shrinkImageSet != null && shrinkImageSet.getFixImage() != null) {
                // ??
                ALStorageService.createNewFile(new ByteArrayInputStream(shrinkImageSet.getFixImage()),
                        FOLDER_FILEDIR_WIKI + ALStorageService.separator() + Database.getDomainName()
                                + ALStorageService.separator() + CATEGORY_KEY + ALStorageService.separator()
                                + uid + ALStorageService.separator() + filename);
            } else {
                // ?
                ALStorageService.copyTmpFile(uid, folderName, String.valueOf(filebean.getFileId()),
                        FOLDER_FILEDIR_WIKI, CATEGORY_KEY + ALStorageService.separator() + uid, filename);
            }
        }

        // ??
        ALStorageService.deleteTmpFolder(uid, folderName);
    } catch (Exception e) {
        Database.rollback();
        logger.error("WikiFileUtils.insertFileDataDelegate", e);
        return false;
    }
    return true;
}