Examples of PNGChunkPLTE


Examples of org.apache.sanselan.formats.png.chunks.PNGChunkPLTE

                else if (chunkType == zTXt)
                    result.add(new PNGChunkzTXt(length, chunkType, CRC, bytes));
                else if (chunkType == IHDR)
                    result.add(new PNGChunkIHDR(length, chunkType, CRC, bytes));
                else if (chunkType == PLTE)
                    result.add(new PNGChunkPLTE(length, chunkType, CRC, bytes));
                else if (chunkType == pHYs)
                    result.add(new PNGChunkpHYs(length, chunkType, CRC, bytes));
                else if (chunkType == IDAT)
                    result.add(new PNGChunkIDAT(length, chunkType, CRC, bytes));
                else if (chunkType == gAMA)
View Full Code Here

Examples of org.apache.sanselan.formats.png.chunks.PNGChunkPLTE

        ArrayList PLTEs = filterChunks(chunks, PLTE);
        if (PLTEs.size() > 1)
            throw new ImageReadException("PNG contains more than one Palette");

        PNGChunkPLTE pngChunkPLTE = null;
        if (PLTEs.size() == 1)
            pngChunkPLTE = (PNGChunkPLTE) PLTEs.get(0);

        // -----

        ArrayList IDATs = filterChunks(chunks, IDAT);
        if (IDATs.size() < 1)
            throw new ImageReadException("PNG missing image data");

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        for (int i = 0; i < IDATs.size(); i++)
        {
            PNGChunkIDAT pngChunkIDAT = (PNGChunkIDAT) IDATs.get(i);
            byte bytes[] = pngChunkIDAT.bytes;
            // System.out.println(i + ": bytes: " + bytes.length);
            baos.write(bytes);
        }

        byte compressed[] = baos.toByteArray();

        baos = null;

        TransparencyFilter transparencyFilter = null;

        ArrayList tRNSs = filterChunks(chunks, tRNS);
        if (tRNSs.size() > 0)
        {
            PNGChunk pngChunktRNS = (PNGChunk) tRNSs.get(0);
            transparencyFilter = getTransparencyFilter(pngChunkIHDR.colorType,
                    pngChunktRNS);
        }

        ICC_Profile icc_profile = null;
        GammaCorrection gammaCorrection = null;
        {
            ArrayList sRGBs = filterChunks(chunks, sRGB);
            ArrayList gAMAs = filterChunks(chunks, gAMA);
            ArrayList iCCPs = filterChunks(chunks, iCCP);
            if (sRGBs.size() > 1)
                throw new ImageReadException("PNG: unexpected sRGB chunk");
            if (gAMAs.size() > 1)
                throw new ImageReadException("PNG: unexpected gAMA chunk");
            if (iCCPs.size() > 1)
                throw new ImageReadException("PNG: unexpected iCCP chunk");

            if (sRGBs.size() == 1)
            {
                // no color management neccesary.
                if (debug)
                    System.out.println("sRGB, no color management neccesary.");
            } else if (iCCPs.size() == 1)
            {
                if (debug)
                    System.out.println("iCCP.");

                PNGChunkiCCP pngChunkiCCP = (PNGChunkiCCP) iCCPs.get(0);
                byte bytes[] = pngChunkiCCP.UncompressedProfile;

                // TODO(maybe): ICC color profile
                //icc_profile = ICC_Profile.getInstance(bytes);
                icc_profile = null;
            } else if (gAMAs.size() == 1)
            {
                PNGChunkgAMA pngChunkgAMA = (PNGChunkgAMA) gAMAs.get(0);
                double gamma = pngChunkgAMA.getGamma();

                // charles: what is the correct target value here?
                // double targetGamma = 2.2;
                double targetGamma = 1.0;
                double diff = Math.abs(targetGamma - gamma);
                if (diff >= 0.5)
                    gammaCorrection = new GammaCorrection(gamma, targetGamma);

                if (gammaCorrection != null)
                    if (pngChunkPLTE != null)
                        pngChunkPLTE.correct(gammaCorrection);

            }
        }

        {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.