use of javax.imageio.ImageWriteParam in project screenbird by adamhub.
the class ImageUtilTest method generateTestImageFile.
/**
* Generates screenshot for JUnit testing
* @return
* File pointer to screen shot
*/
private File generateTestImageFile(Rectangle captureArea) {
if (captureArea == null) {
//Get full screen if no defined area of screen capture is defined
captureArea = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
}
try {
BufferedImage bufferedImage = generateTestImage(captureArea);
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter) iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(1.0F);
File imageFile = generateTempFile("jpeg");
FileImageOutputStream stream = new FileImageOutputStream(imageFile);
//Set up file access
writer.setOutput(stream);
//Create image
IIOImage image = new IIOImage(bufferedImage, null, null);
//write image
writer.write(null, image, iwp);
//Close image stream
stream.close();
return imageFile;
} catch (IOException e) {
System.err.println(e);
}
return null;
}
use of javax.imageio.ImageWriteParam in project nutz by nutzam.
the class Images method writeJpeg.
/**
* 写入一个 JPG 图像
*
* @param im
* 图像对象
* @param targetJpg
* 目标输出 JPG 图像文件
* @param quality
* 质量 0.1f ~ 1.0f
*/
public static void writeJpeg(RenderedImage im, Object targetJpg, float quality) {
try {
ImageWriter writer = ImageIO.getImageWritersBySuffix("jpg").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(quality);
ImageOutputStream os = ImageIO.createImageOutputStream(targetJpg);
writer.setOutput(os);
writer.write((IIOMetadata) null, new IIOImage(im, null, null), param);
os.flush();
os.close();
} catch (IOException e) {
throw Lang.wrapThrow(e);
}
}
use of javax.imageio.ImageWriteParam in project screenbird by adamhub.
the class ImageUtil method markAndCompress.
/**
* Adds a watermark to the image and compresses it.
* @param imageSource
* @param compressionQuality
* @param mark
* @param markImageSource
*/
public static void markAndCompress(String imageSource, float compressionQuality, boolean mark, String markImageSource) {
try {
File fileImageSource = new File(imageSource);
if (!fileImageSource.exists()) {
throw new ImageDoesNotExistException("Mark Image doesn't exists: " + fileImageSource.getAbsolutePath());
}
BufferedImage bufferedImage = ImageIO.read(fileImageSource);
if (mark) {
addMark(bufferedImage, markImageSource, 1.0f, ImageUtil.MARK_LEFT_BOTTOM);
}
// Get a jpeg writer
ImageWriter writer = null;
Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
if (iter.hasNext()) {
writer = (ImageWriter) iter.next();
}
if (writer == null) {
throw new IOException("Could not get JPEG writer");
}
// Prepare output file
ImageOutputStream ios = ImageIO.createImageOutputStream(fileImageSource);
if (ios == null) {
throw new IOException("Could not open image stream to write image watermark");
}
writer.setOutput(ios);
// Set the compression quality
ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
if (compressionQuality < 0.0F || compressionQuality > 1.0F) {
compressionQuality = 1.0F;
}
iwparam.setCompressionQuality(compressionQuality);
// Write the image
writer.write(null, new IIOImage(bufferedImage, null, null), iwparam);
// Cleanup
ios.flush();
writer.dispose();
ios.close();
} catch (IllegalArgumentException e) {
log(e);
} catch (IOException e) {
log(e);
} catch (ImageDoesNotExistException e) {
log(e);
}
}
use of javax.imageio.ImageWriteParam in project jdk8u_jdk by JetBrains.
the class BooleanAttributes method test.
public static void test(String mimeType, boolean useStreamMeta, String metaXml, String... boolXpaths) throws Exception {
BufferedImage img = new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB);
ImageWriter iw = ImageIO.getImageWritersByMIMEType(mimeType).next();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageOutputStream ios = new MemoryCacheImageOutputStream(os);
iw.setOutput(ios);
ImageWriteParam param = null;
IIOMetadata streamMeta = iw.getDefaultStreamMetadata(param);
IIOMetadata imageMeta = iw.getDefaultImageMetadata(new ImageTypeSpecifier(img), param);
IIOMetadata meta = useStreamMeta ? streamMeta : imageMeta;
Source src = new StreamSource(new StringReader(metaXml));
DOMResult dst = new DOMResult();
transform(src, dst);
Document doc = (Document) dst.getNode();
Element node = doc.getDocumentElement();
String metaFormat = node.getNodeName();
// Verify that the default metadata gets formatted correctly.
verify(meta.getAsTree(metaFormat), boolXpaths, false);
meta.mergeTree(metaFormat, node);
// Verify that the merged metadata gets formatte correctly.
verify(meta.getAsTree(metaFormat), boolXpaths, true);
iw.write(streamMeta, new IIOImage(img, null, imageMeta), param);
iw.dispose();
ios.close();
ImageReader ir = ImageIO.getImageReader(iw);
byte[] bytes = os.toByteArray();
if (bytes.length == 0)
throw new AssertionError("Zero length image file");
ByteArrayInputStream is = new ByteArrayInputStream(bytes);
ImageInputStream iis = new MemoryCacheImageInputStream(is);
ir.setInput(iis);
if (useStreamMeta)
meta = ir.getStreamMetadata();
else
meta = ir.getImageMetadata(0);
// Verify again after writing and re-reading the image
verify(meta.getAsTree(metaFormat), boolXpaths, true);
}
use of javax.imageio.ImageWriteParam in project jdk8u_jdk by JetBrains.
the class BMPPluginTest method main.
public static void main(String[] args) {
if (args.length > 0) {
format = args[0];
System.out.println("Test format " + format);
}
init();
System.out.println("IR=" + ir);
System.out.println("IW=" + iw);
ImageIO.setUseCache(false);
for (int i = 0; i < types.length; i++) {
boolean bPassed = true;
Object reason = null;
try {
BufferedImage image = createTestImage(types[i]);
ImageWriteParam param = iw.getDefaultWriteParam();
BMPPluginTest t = new BMPPluginTest(image, param);
boolean res = false;
res = t.test();
if (!res) {
bPassed = false;
reason = new String("Null result");
}
} catch (IllegalArgumentException ex) {
System.out.println("Expected exception type was caught: " + ex);
} catch (Throwable ex) {
System.out.println("FAILED");
ex.printStackTrace();
bPassed = false;
reason = ex;
throw new RuntimeException("Test for type " + types[i] + " FAILED due to exception");
}
/*
System.out.println("Type " + types[i] + " result: " +
(bPassed ? "PASSED" : "FAILED") +
((reason != null) ? (" Reason: " + reason) : ""));
*/
System.out.println("Test for type " + types[i] + " PASSED");
}
System.out.println("END OF TEST");
}
Aggregations