Home > I O Error > I/o Error Reading Image Metadata

I/o Error Reading Image Metadata

more stack exchange communities company blog Stack Exchange Inbox Reputation and Badges sign up log in tour help Tour Start here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. How to unlink (remove) the special hardlink "." created for a folder? Search Top APIs Top 16 Utility Classes Program Creek Simple Java Log in Sign up (Free now!) 5412 users Top Related Classes javax.imageio.ImageTypeSpecifier javax.imageio.IIOImage java.awt.Rectangle javax.imageio.ImageWriteParam java.awt.image.DataBuffer java.io.IOException java.awt.image.BufferedImage javax.imageio.metadata.IIOMetadata org.geotools.resources.i18n.ErrorKeys javax.imageio.ImageWriter java.awt.image.SampleModel org.geotools.resources.i18n.Errors Java Code Examples for javax.imageio.IIOException The following are top voted examples for showing how to use javax.imageio.IIOException. Image I/O has many other features such as:The fastest image decoders and encoders for the Mac platformThe ability to load images incrementallySupport for image metadataEffective cachingYou can create image source and image destination objects from:URLs. this content

bug 4929147) do not // correctly set the value of this field. processWarningOccurred("PlanarConfiguration \"Planar\" value inconsistent with StripOffsets field value count; resetting to \"Chunky\"."); planarConfigurationValue = BaselineTIFFTagSet.PLANAR_CONFIGURATION_CHUNKY; } } } } return planarConfigurationValue; } return BaselineTIFFTagSet.PLANAR_CONFIGURATION_CHUNKY; } private long getTileOrStripOffset(int tileIndex) throws IIOException { TIFFField f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_TILE_OFFSETS); if (f == null) { f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_STRIP_OFFSETS); } if (f == null) { f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_JPEG_INTERCHANGE_FORMAT); } if(f == null) { throw new IIOException ("Missing required strip or tile offsets field."); } return f.getAsLong(tileIndex); } private long getTileOrStripByteCount(int tileIndex) throws IOException { TIFFField f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_TILE_BYTE_COUNTS); if (f == null) { f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_STRIP_BYTE_COUNTS); } if (f == null) { f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH); } long tileOrStripByteCount; if(f != null) { tileOrStripByteCount = f.getAsLong(tileIndex); } else { processWarningOccurred("TIFF directory contains neither StripByteCounts nor TileByteCounts field: attempting to calculate from strip or tile width and height."); // Initialize to number of bytes per strip or tile assuming // no compression. if(tileRect.width <= 0 || tileRect.height <= 0) { return; } int srcMinX = tileRect.x; int srcMinY = tileRect.y; int srcWidth = tileRect.width; int srcHeight = tileRect.height; // Determine dest region that can be derived from the // source region dstMinX = iceil(srcMinX - sourceXOffset, srcXSubsampling); int dstMaxX = ifloor(srcMinX + srcWidth - 1 - sourceXOffset, srcXSubsampling); dstMinY = iceil(srcMinY - sourceYOffset, srcYSubsampling); int dstMaxY = ifloor(srcMinY + srcHeight - 1 - sourceYOffset, srcYSubsampling); dstWidth = dstMaxX - dstMinX + 1; dstHeight = dstMaxY - dstMinY + 1; dstMinX += dstXOffset; dstMinY += dstYOffset; // Clip against image bounds Rectangle dstRect = new Rectangle(dstMinX, dstMinY, dstWidth, dstHeight); dstRect = dstRect.intersection(theImage.getRaster().getBounds()); dstMinX = dstRect.x; dstMinY = dstRect.y; dstWidth = dstRect.width; dstHeight = dstRect.height; if (dstWidth <= 0 || dstHeight <= 0) { return; } // Backwards map dest region to source to determine // active source region int activeSrcMinX = (dstMinX - dstXOffset)*srcXSubsampling + sourceXOffset; int sxmax = (dstMinX + dstWidth - 1 - dstXOffset)*srcXSubsampling + sourceXOffset; int activeSrcWidth = sxmax - activeSrcMinX + 1; int activeSrcMinY = (dstMinY - dstYOffset)*srcYSubsampling + sourceYOffset; int symax = (dstMinY + dstHeight - 1 - dstYOffset)*srcYSubsampling + sourceYOffset; int activeSrcHeight = symax - activeSrcMinY + 1; decompressor.setSrcMinX(srcMinX); decompressor.setSrcMinY(srcMinY); decompressor.setSrcWidth(srcWidth); decompressor.setSrcHeight(srcHeight); decompressor.setDstMinX(dstMinX); decompressor.setDstMinY(dstMinY); decompressor.setDstWidth(dstWidth); decompressor.setDstHeight(dstHeight); decompressor.setActiveSrcMinX(activeSrcMinX); decompressor.setActiveSrcMinY(activeSrcMinY); decompressor.setActiveSrcWidth(activeSrcWidth); decompressor.setActiveSrcHeight(activeSrcHeight); int tileIndex = tj*tilesAcross + ti; if (planarConfiguration == BaselineTIFFTagSet.PLANAR_CONFIGURATION_PLANAR) { tileIndex += band*tilesAcross*tilesDown; } long offset = getTileOrStripOffset(tileIndex); long byteCount = getTileOrStripByteCount(tileIndex); // // Attempt to handle truncated streams, i.e., where reading the // compressed strip or tile would result in an EOFException. Stack Overflow | Michelle Micallef | 5 years ago 0 mark Creating a BufferedImage from .tiff file Stack Overflow | 5 years ago | Michelle Micallef javax.imageio.IIOException: I/O error reading image metadata!

BaselineTIFFTagSet.PREDICTOR_NONE : predictorField.getAsInt(0)); this.decompressor = new TIFFDeflateDecompressor(predictor); } else if (compression == BaselineTIFFTagSet.COMPRESSION_OLD_JPEG) { TIFFField JPEGProcField = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_JPEG_PROC); if(JPEGProcField == null) { processWarningOccurred ("JPEGProc field missing; assuming baseline sequential JPEG process."); } else if(JPEGProcField.getAsInt(0) != BaselineTIFFTagSet.JPEG_PROC_BASELINE) { throw new IIOException ("Old-style JPEG supported for baseline sequential JPEG process only!"); } this.decompressor = new TIFFOldJPEGDecompressor(); //throw new IIOException("Old-style JPEG not supported!"); } else { throw new IIOException ("Unsupported compression type (tag number = "+ compression+")!"); } if (photometricInterpretation == BaselineTIFFTagSet.PHOTOMETRIC_INTERPRETATION_Y_CB_CR && compression != BaselineTIFFTagSet.COMPRESSION_JPEG && compression != BaselineTIFFTagSet.COMPRESSION_OLD_JPEG) { boolean convertYCbCrToRGB = theImage.getColorModel().getColorSpace().getType() == ColorSpace.TYPE_RGB; TIFFDecompressor wrappedDecompressor = this.decompressor instanceof TIFFNullDecompressor ? Reload to refresh your session. Fix typos or links Fix incorrect information Add or update code samples Add or update illustrations Add information about... * * Required information To submit a product bug or enhancement request, please visit the Bug Reporter page. Best regardsMhamad El Hage srhubbard 2015-08-17 14:03:21 UTC #2 Hello Mhamad, I have seen this error message a few times when reading S1 data using the S1 Toolbox.

TIFFStreamMetadata streamMetadata = null; // The current image index. Used memory : " //$NON-NLS-1$ //$NON-NLS-2$ + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) >> 20) + " Mb"); //$NON-NLS-1$ } System.gc(); if(log.isInfoEnabled()){ log.info("After running gc on map tiles. current community chat Stack Overflow Meta Stack Overflow your communities Sign up or log in to customize your list. Join them; it only takes a minute: Sign up Issue with reading Tiff image metadata with imageIO up vote 0 down vote favorite I'm writing a program that is supposed to taking in a bunch of tiff's and put them together.

It seems the the image metadata was a bit screwed up. We recommend upgrading to the latest Safari, Google Chrome, or Firefox. HashMap imageTypeMap = new HashMap(); BufferedImage theImage = null; int width = -1; int height = -1; int numBands = -1; int tileOrStripWidth = -1, tileOrStripHeight = -1; int planarConfiguration = BaselineTIFFTagSet.PLANAR_CONFIGURATION_CHUNKY; int rowsDone = 0; int compression; int photometricInterpretation; int samplesPerPixel; int[] sampleFormat; int[] bitsPerSample; int[] extraSamples; char[] colorMap; int sourceXOffset; int sourceYOffset; int srcXSubsampling; int srcYSubsampling; int dstWidth; int dstHeight; int dstMinX; int dstMinY; int dstXOffset; int dstYOffset; int tilesAcross; int tilesDown; int pixelsRead; int pixelsToRead; public TIFFImageReader(ImageReaderSpi originatingProvider) { super(originatingProvider); } public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) { super.setInput(input, seekForwardOnly, ignoreMetadata); // Clear all local values based on the previous stream contents. https://community.oracle.com/thread/1268685 if (this.decompressor == null) { if(DEBUG) { System.out.println("Using Java T.4 decompressor"); } this.decompressor = new TIFFFaxDecompressor(); } } else if (compression == BaselineTIFFTagSet.COMPRESSION_CCITT_RLE) { this.decompressor = new TIFFFaxDecompressor(); } else if (compression == BaselineTIFFTagSet.COMPRESSION_PACKBITS) { if(DEBUG) { System.out.println("Using TIFFPackBitsDecompressor"); } this.decompressor = new TIFFPackBitsDecompressor(); } else if (compression == BaselineTIFFTagSet.COMPRESSION_LZW) { if(DEBUG) { System.out.println("Using TIFFLZWDecompressor"); } TIFFField predictorField = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_PREDICTOR); int predictor = ((predictorField == null) ?

Mark as duplicate Convert to a question Link a related branch Link to CVE You are not directly subscribed to this bug's notifications. Subscribing... if(abortRequested()) { isAbortRequested = true; break; } decodeTile(ti, tj, band); } if(isAbortRequested) break; reportProgress(); } if(isAbortRequested) break; } } else { //XXX decompressor.beginDecoding(); for (int tj = minTileY; tj <= maxTileY; tj++) { for (int ti = minTileX; ti <= maxTileX; ti++) { // The method abortRequested() is synchronized // so check it only once per loop just before // doing any actual decoding. Images whose location can be specified as a URL can act as a supplier or receiver of image data.

That's the case of the image attached to this bug report. java tiff javax.imageio share|improve this question asked Aug 9 '13 at 15:09 user940769 2328 Have you tried reading only reader.getNumImages()? first : f.getAsInt(i); if (sampleFormat[i] != BaselineTIFFTagSet.SAMPLE_FORMAT_UNSIGNED_INTEGER && sampleFormat[i] != BaselineTIFFTagSet.SAMPLE_FORMAT_SIGNED_INTEGER && sampleFormat[i] != BaselineTIFFTagSet.SAMPLE_FORMAT_FLOATING_POINT && sampleFormat[i] != BaselineTIFFTagSet.SAMPLE_FORMAT_UNDEFINED) { processWarningOccurred( "Illegal value for SAMPLE_FORMAT, assuming SAMPLE_FORMAT_UNDEFINED"); sampleFormat[i] = BaselineTIFFTagSet.SAMPLE_FORMAT_UNDEFINED; } } // BitsPerSample f = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_BITS_PER_SAMPLE); this.bitsPerSample = new int[samplesPerPixel]; replicateFirst = false; if (f == null) { replicateFirst = true; first = defaultBitDepth; } else if (f.getCount() != samplesPerPixel) { replicateFirst = true; first = f.getAsInt(0); } for (int i = 0; i < samplesPerPixel; i++) { // Replicate initial value if not enough values provided bitsPerSample[i] = replicateFirst ? Join Now I want to fix my crash I want to help others javax.imageio.IIOException: I/O error reading image metadata!

ColorModel iccColorModel = new ComponentColorModel(iccColorSpace, cmRaw.getComponentSize(), hasAlpha, isAlphaPre, cmRaw.getTransparency(), cmRaw.getTransferType()); // Prepend the ICC profile-based ITS to the List. news Hot Network Questions What happens if one brings more than 10,000 USD with them into the US? BaselineTIFFTagSet.PREDICTOR_NONE : predictorField.getAsInt(0)); this.decompressor = new TIFFLZWDecompressor(predictor); } else if (compression == BaselineTIFFTagSet.COMPRESSION_JPEG) { this.decompressor = new TIFFJPEGDecompressor(); } else if (compression == BaselineTIFFTagSet.COMPRESSION_ZLIB || compression == BaselineTIFFTagSet.COMPRESSION_DEFLATE) { TIFFField predictorField = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_PREDICTOR); int predictor = ((predictorField == null) ? at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.readMetadata(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.seekToImage(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.getImageMetadata(Unknown Source) at tiffmetadatabug.Main.main(Main.java:80) Caused by: java.io.EOFException at javax.imageio.stream.ImageInputStreamImpl.readShort(ImageInputStreamImpl.java:211) at javax.imageio.stream.ImageInputStreamImpl.readUnsignedShort(ImageInputStreamImpl.java:222) at com.sun.media.imageioimpl.plugins.tiff.TIFFIFD.initialize(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFIFD.initialize(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageMetadata.initializeFromStream(Unknown Source) ... 4 more Java Result: 1 96Views Tags: none (add) This content has been marked as final.

private void checkIndex(int imageIndex) { if (imageIndex < minIndex) { throw new IndexOutOfBoundsException("imageIndex < minIndex!"); } if (seekForwardOnly) { minIndex = imageIndex; } } // Verify that imageIndex is in bounds, find the image IFD, read the // image metadata, initialize instance variables from the metadata. TIFFField fillOrderField = imageMetadata.getTIFFField(BaselineTIFFTagSet.TAG_FILL_ORDER); // Set the decompressor based on the fill order. These examples are extracted from open source projects. have a peek at these guys at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.readMetadata(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.seekToImage(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.getImageMetadata(Unknown Source) at tiffmetadatabug.Main.main(Main.java:96) Caused by: java.io.EOFException at javax.imageio.stream.ImageInputStreamImpl.readShort(ImageInputStreamImpl.java:211) at javax.imageio.stream.ImageInputStreamImpl.readUnsignedShort(ImageInputStreamImpl.java:222) at com.sun.media.imageioimpl.plugins.tiff.TIFFIFD.initialize(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFIFD.initialize(Unknown Source) at com.sun.media.imageioimpl.plugins.tiff.TIFFImageMetadata.initializeFromStream(Unknown Source) ... 4 more Java Result: 1 Like Show 0 Likes(0) Actions 2.

All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistribution of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name of Sun Microsystems, Inc. if(!isImageTiled(currIndex)) { tileRect = tileRect.intersection(new Rectangle(0, 0, width, height)); } // Return if the intersection is empty. Please turn JavaScript back on and reload this page.

Anyone can help me?

My problem is that I get the following error: javax.imageio.IIOException: I/O error reading image metadata! byte[] iccProfileValue = iccProfileField.getAsBytes(); ICC_Profile iccProfile = ICC_Profile.getInstance(iccProfileValue); ICC_ColorSpace iccColorSpace = new ICC_ColorSpace(iccProfile); // Get the raw sample and color information. Tired of useless tips? Reload to refresh your session.

I get problems reading the metadata. int bitsPerPixel = bitsPerSample[0]; for(int i = 1; i < samplesPerPixel; i++) { bitsPerPixel += bitsPerSample[i]; } int bytesPerRow = (getTileOrStripWidth()*bitsPerPixel + 7)/8; tileOrStripByteCount = bytesPerRow*getTileOrStripHeight(); // Clamp to end of stream if possible. SubtitleType.VOBSUB : SubtitleType.UNKNOWN)); int a = line.indexOf("("); int b = line.indexOf("):", a); if (a > -1 && b > a) { lang.setLang(line.substring(a + 1, b)); } else { lang.setLang(DLNAMediaLang.UND); } lang.setId(subId++); int FFmpegMetaDataNr = FFmpegMetaData.nextIndex(); if (FFmpegMetaDataNr > -1) { line = lines.get(FFmpegMetaDataNr); } if (line.indexOf("Metadata:") > -1) { FFmpegMetaDataNr = FFmpegMetaDataNr + 1; line = lines.get(FFmpegMetaDataNr); while (line.indexOf(" ") == 0) { if (line.toLowerCase().indexOf("title :") > -1) { int aa = line.indexOf(": "); int bb = line.length(); if (aa > -1 && bb > aa) { lang.setFlavor(line.substring(aa+2, bb)); break; } } else { FFmpegMetaDataNr = FFmpegMetaDataNr + 1; line = lines.get(FFmpegMetaDataNr); } } } getSubtitleTracksList().add(lang); } } } } if (!thumbOnly && getContainer() != null && inputFile.getFile() != null && getContainer().equals("mpegts") && isH264() && getDurationInSeconds() == 0) { // Parse the duration try { int length = MpegUtil.getDurationFromMpeg(inputFile.getFile()); if (length > 0) { setDuration((double) length); } } catch (IOException e) { logger.trace("Error retrieving length: " + e.getMessage()); } } if (configuration.isUseMplayerForVideoThumbs() && type == Format.VIDEO && !dvrms) { try { getMplayerThumbnail(inputFile); String frameName = "" + inputFile.hashCode(); frameName = configuration.getTempFolder() + "/mplayer_thumbs/" + frameName + "00000001/00000001.jpg"; frameName = frameName.replace(',', '_'); File jpg = new File(frameName); if (jpg.exists()) { InputStream is = new FileInputStream(jpg); int sz = is.available(); if (sz > 0) { setThumb(new byte[sz]); is.read(getThumb()); } is.close(); if (!jpg.delete()) { jpg.deleteOnExit(); } // Try and retry if (!jpg.getParentFile().delete() && !jpg.getParentFile().delete()) { logger.debug("Failed to delete \"" + jpg.getParentFile().getAbsolutePath() + "\""); } } } catch (IOException e) { logger.debug("Caught exception", e); } } if (type == Format.VIDEO && pw != null && getThumb() == null) { InputStream is; try { is = pw.getInputStream(0); int sz = is.available(); if (sz > 0) { setThumb(new byte[sz]); is.read(getThumb()); } is.close(); if (sz > 0 && !net.pms.PMS.isHeadless()) { BufferedImage image = ImageIO.read(new ByteArrayInputStream(getThumb())); if (image != null) { Graphics g = image.getGraphics(); g.setColor(Color.WHITE); g.setFont(new Font("Arial", Font.PLAIN, 14)); int low = 0; if (getWidth() > 0) { if (getWidth() == 1920 || getWidth() == 1440) { g.drawString("1080p", 0, low += 18); } else if (getWidth() == 1280) { g.drawString("720p", 0, low += 18); } } ByteArrayOutputStream out = new ByteArrayOutputStream(); ImageIO.write(image, "jpeg", out); setThumb(out.toByteArray()); } } } catch (IOException e) { logger.debug("Error while decoding thumbnail: " + e.getMessage()); } } } finalize(type, inputFile); setMediaparsed(true); } } Example 20 Project: LichtstrahlenSpiel File: LineEditor.java View source code 5 votes public void importPuzzleBoard(IBeamsOfLightPuzzleBoard source) throws NumberFormatException, IIOException, IOException{ GraficFactory gf = new GraficFactory(source); ITile currentTile ; ITileState currentTileState; TilePanel tile; char c; double angle; col = source.getWidth(); row = source.getHeight(); gl = new GridLayout(row,col); tileList.clear(); tiles = new JPanel(cl); tilesPanel = new TilesPanel(); tilesPanel.setLayout(gl); for(int i=0;iCGImageSourceRef) and writing image data to a destination (CGImageDestinationRef). check my blog A workaround is of course to rework the image with the gimp, as the gimp will add size hints to the image.

Current state of Straus's illumination problem Keyboard shortcut to search for text in MS Outlook 2007 Is it legal to bring board games (made of wood) to Australia? identity.transform(new DOMSource(metadataRoot), new StreamResult(new File("file.xml"))); InputSource inputSource = new InputSource(new FileInputStream(new File ("file.xml"))); XPath xPath = XPathFactory.newInstance().newXPath(); String getvalue = xPath.evaluate("//TIFFField[@number='282']/TIFFRationals/TIFFRational/@value", inputSource); System.out.println("Result of XPath evaluation: " + getvalue); gb Like Show 0 Likes(0) Actions Go to original post Actions Powered byAbout Oracle Technology Network (OTN)Oracle Communities DirectoryFAQAbout OracleOracle and SunRSS FeedsSubscribeCareersContact UsSite MapsLegal NoticesTerms of UseYour Privacy Rights© 2007-2016 Jive Software | Powered by Home | Top of pageJive Software Version: 8.0.3.1 , revision: 20160414082626.1619a91.release_8.0.3.x Skip navigationOracle Community DirectoryOracle Community FAQGo Directly To Oracle Technology Network CommunityMy Oracle Support CommunityOPN Cloud ConnectionOracle Employee CommunityOracle User Group CommunityTopliners CommunityJava CommunityOTN Speaker BureauLog inRegisterSearchSearchCancelError: You don't have JavaScript enabled. If possible, it could help if you post a link to one of the images causing trouble. –haraldK Aug 12 '13 at 7:52 Also, why readAll if you don't need the metadata? Please type your message and try again.

Since I was just doing a plain merge and since I knew each image was one page I was able to use a buffered image to read in the picture then make it a IIOImage with null metadata. int minTileX = TIFFImageWriter.XToTileX(srcRegion.x, 0, tileOrStripWidth); int minTileY = TIFFImageWriter.YToTileY(srcRegion.y, 0, tileOrStripHeight); int maxTileX = TIFFImageWriter.XToTileX(srcRegion.x + srcRegion.width - 1, 0, tileOrStripWidth); int maxTileY = TIFFImageWriter.YToTileY(srcRegion.y + srcRegion.height - 1, 0, tileOrStripHeight); boolean isAbortRequested = false; if (planarConfiguration == BaselineTIFFTagSet.PLANAR_CONFIGURATION_PLANAR) { decompressor.setPlanar(true); int[] sb = new int[1]; int[] db = new int[1]; for (int tj = minTileY; tj <= maxTileY; tj++) { for (int ti = minTileX; ti <= maxTileX; ti++) { for (int band = 0; band < numBands; band++) { sb[0] = sourceBands[band]; decompressor.setSourceBands(sb); db[0] = destinationBands[band]; decompressor.setDestinationBands(db); //XXX decompressor.beginDecoding(); // The method abortRequested() is synchronized // so check it only once per loop just before // doing any actual decoding. Sci-Fi movie, about binary code, aliens, and headaches Why did Moody eat the school's sausages? The Core Foundation objects CFDataRef and CFMutableDataRef.Quartz data consumer (CGDataConsumerRef) and data provider (CGDataProviderRef) objects.Using the Image I/O Framework in Your ApplicationImage I/O resides in the Application Services framework in OS X, and in the Image I/O framework in iOS.