You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.6 KiB
105 lines
2.6 KiB
/*
|
|
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
package com.sun.imageio.plugins.gif;
|
|
|
|
import java.awt.image.ColorModel;
|
|
import java.awt.image.SampleModel;
|
|
import java.util.Locale;
|
|
import javax.imageio.ImageTypeSpecifier;
|
|
import javax.imageio.ImageWriter;
|
|
import javax.imageio.spi.ImageWriterSpi;
|
|
import javax.imageio.stream.ImageOutputStream;
|
|
import com.sun.imageio.plugins.common.PaletteBuilder;
|
|
|
|
public class GIFImageWriterSpi extends ImageWriterSpi {
|
|
|
|
private static final String vendorName = "Oracle Corporation";
|
|
|
|
private static final String version = "1.0";
|
|
|
|
private static final String[] names = { "gif", "GIF" };
|
|
|
|
private static final String[] suffixes = { "gif" };
|
|
|
|
private static final String[] MIMETypes = { "image/gif" };
|
|
|
|
private static final String writerClassName =
|
|
"com.sun.imageio.plugins.gif.GIFImageWriter";
|
|
|
|
private static final String[] readerSpiNames = {
|
|
"com.sun.imageio.plugins.gif.GIFImageReaderSpi"
|
|
};
|
|
|
|
public GIFImageWriterSpi() {
|
|
super(vendorName,
|
|
version,
|
|
names,
|
|
suffixes,
|
|
MIMETypes,
|
|
writerClassName,
|
|
new Class[] { ImageOutputStream.class },
|
|
readerSpiNames,
|
|
true,
|
|
GIFWritableStreamMetadata.NATIVE_FORMAT_NAME,
|
|
"com.sun.imageio.plugins.gif.GIFStreamMetadataFormat",
|
|
null, null,
|
|
true,
|
|
GIFWritableImageMetadata.NATIVE_FORMAT_NAME,
|
|
"com.sun.imageio.plugins.gif.GIFImageMetadataFormat",
|
|
null, null
|
|
);
|
|
}
|
|
|
|
public boolean canEncodeImage(ImageTypeSpecifier type) {
|
|
if (type == null) {
|
|
throw new IllegalArgumentException("type == null!");
|
|
}
|
|
|
|
SampleModel sm = type.getSampleModel();
|
|
ColorModel cm = type.getColorModel();
|
|
|
|
boolean canEncode = sm.getNumBands() == 1 &&
|
|
sm.getSampleSize(0) <= 8 &&
|
|
sm.getWidth() <= 65535 &&
|
|
sm.getHeight() <= 65535 &&
|
|
(cm == null || cm.getComponentSize()[0] <= 8);
|
|
|
|
if (canEncode) {
|
|
return true;
|
|
} else {
|
|
return PaletteBuilder.canCreatePalette(type);
|
|
}
|
|
}
|
|
|
|
public String getDescription(Locale locale) {
|
|
return "Standard GIF image writer";
|
|
}
|
|
|
|
public ImageWriter createWriterInstance(Object extension) {
|
|
return new GIFImageWriter(this);
|
|
}
|
|
}
|