Browse our Products
Aspose.Imaging for Java 17.12 - Release Notes
Key | Summary | Category |
---|---|---|
IMAGINGJAVA-849 | Support for converting CMYK PSD to CMYK TIFF | Feature |
IMAGINGJAVA-870 | TypeTool6ResourceProcessor.ReplaceTextInGlobalResources does not work | Enhancement |
IMAGINGJAVA-869 | Incorrect condition statement in DgImage.RawProcess | Enhancement |
IMAGINGJAVA-868 | Incorrect condition statement in DgImage.Unpack | Enhancement |
IMAGINGJAVA-867 | Improve Djvu performance | Enhancement |
IMAGINGJAVA-866 | Corrupted DngImage.Width and DngImage.Height after calling the Image.GetPixel method | Enhancement |
IMAGINGJAVA-865 | GIF image is not properly converted to Png | Enhancement |
IMAGINGJAVA-864 | Incorrect number conversion in OpenDocument support class: OdEnhancedGeometryReader.ReadEnd | Enhancement |
IMAGINGJAVA-862 | Image exception on load TIFF image | Enhancement |
IMAGINGJAVA-861 | Improve memory usage of Jpeg fomat through improving work with buffer | Enhancement |
IMAGINGJAVA-860 | OpenTypeInfoCacheProcessor.UpdateFontsCacheFromFolders throws exception and breaks the work if there are zero files in Fonts directory | Enhancement |
IMAGINGJAVA-859 | Image saving failed when saving JPEG2000 as PNG | Enhancement |
IMAGINGJAVA-858 | Exception on converting emf to SVG | Enhancement |
IMAGINGJAVA-857 | Fix PSD crop operation | Enhancement |
IMAGINGJAVA-856 | Fix PSD test rendering for specific case | Enhancement |
IMAGINGJAVA-855 | Exception on saving TIFF Image | Enhancement |
IMAGINGJAVA-854 | GIF not properly converted to PNG | Enhancement |
IMAGINGJAVA-834 | When PSD is converted to PNG, an ArgumentOutOfRangeException occurs | Enhancement |
IMAGINGJAVA-783 | Darker colors and color reproducibility | Enhancement |
IMAGINGJAVA-618 | Converting EMF to PNG in not producing correct outpout | Enhancement |
IMAGINGJAVA-510 | EMF image export error | Enhancement |
Public API changes:
Added APIs:
Please see corresponding cumulative API changes for Aspose.Imaging for .Net 17.12 version
Removed APIs:
Nothing
Usage examples:
IMAGINGJAVA-849 Support for converting CMYK PSD to CMYK Tiff [Java]
public void test() throws IOException
{
String folder = "D:\\tiff\\";
//With IccProfile
this.psdToTiffCmyk(folder,true);
//Without IccProfile
this.psdToTiffCmyk(folder, false);
}
private void psdToTiffCmyk(String folder, boolean isIccProfile) throws IOException
{
String fileName = String.format("cmyk_%b.tiff", isIccProfile);
String inputFile = folder + "cmyk.psd";
String inputIccFile = folder + "JapanWebCoated.icc";
String outputFile = folder + fileName;
Image image = Image.load(inputFile);
try
{
if (isIccProfile)
{
FileInputStream f = new FileInputStream(inputIccFile);
final byte[] icc = new byte[f.available()];
f.read(icc);
f.close();
image.save(outputFile, new TiffOptions(TiffExpectedFormat.TiffLzwCmyk)
{{
setIccProfile(icc);
}});
}
else
{
image.save(outputFile, new TiffOptions(TiffExpectedFormat.TiffLzwCmyk));
}
}
finally
{
image.dispose();
}
}
IMAGINGJAVA-870 TypeTool6ResourceProcessor.ReplaceTextInGlobalResources does not work. [Java] Fix is related to saving PSD metadata after text update (part of it was just not saved), which can be checked by working with updated PSD file directly from Photoshop. If export to other format was the case for you, just don’t bother with it. IMAGINGJAVA-869 Incorrect condition statement in DgImage.RawProcess [Java] input file: Phantom1.dng output file: phantom1.png
String inputFileName = "D:\\Phantom1.dng";
String outFileName = "D:\\Phantom1.png";
Image image = Image.load(inputFileName, new DngLoadOptions() {{ setFbdd(NoiseReductionType.Full); }});
try
{
image.save(outFileName, new PngOptions());
}
finally
{
image.dispose();
}
IMAGINGJAVA-868 Incorrect condition statement in DgImage.Unpack [Java] input file: Phantom1.dng output file: phantom1.png
String inputFileName = "D:\\Phantom1.dng";
String outFileName = "D:\\Phantom1.png";
Image image = Image.load(inputFileName, new DngLoadOptions());
try
{
image.save(outFileName, new PngOptions());
}
finally
{
image.dispose();
}
IMAGINGJAVA-867 Improve Djvu performance [Java] Time of execute in the current library less by 20% than in library 17.10.
String fileName = "superhero.djvu";
String outputFile = "result.tiff";
DjvuImage image = (DjvuImage) Image.load(fileName);
try
{
TiffOptions exportOptions = new TiffOptions(TiffExpectedFormat.Default);
try
{
exportOptions.setMultiPageOptions(new DjvuMultiPageOptions(new IntRange(0, 10)));
image.save(outputFile, exportOptions);
}
finally
{
exportOptions.dispose();
}
}
finally
{
image.dispose();
}
Configuration | time in Current lib | time in 17.10 |
---|---|---|
Core i5 10GB Win 10 x64 | 10.905s | 13.317s |
IMAGINGJAVA-866 Corrupted DngImage.Width and DngImage.Height after calling the Image.GetPixel method. [Java] | ||
input file: berries-raw |
int expectedWidth;
int expectedHeight;
String inputFilename = "berries-raw.dng";
String outFileName = "result.tiff";
DngImage image = (DngImage) Image.load(inputFilename);
try
{
expectedWidth = image.getWidth();
expectedHeight = image.getHeight();
Color c = image.getPixel(3303, 1787);
System.out.println(c);
if (expectedWidth != image.getWidth())
{
throw new RuntimeException(String.format("Current file: Expected width = %d, Actual width = %d", expectedWidth, image.getWidth()));
}
if (expectedHeight != image.getHeight())
{
throw new RuntimeException(String.format("Current file: Expected height = %d, Actual height = %d", expectedHeight, image.getHeight()));
}
image.save(
outFileName,
new TiffOptions(TiffExpectedFormat.TiffNoCompressionRgb));
}
finally
{
image.dispose();
}
Image image2 = Image.load(outFileName);
try
{
if (expectedWidth != image2.getWidth())
{
throw new RuntimeException(String.format("Result file: Expected width = %d, Actual width = %d", expectedWidth, image2.getWidth()));
}
if (expectedHeight != image2.getHeight())
{
throw new RuntimeException(String.format("Result file: Expected height = %d, Actual height = %d", expectedHeight, image2.getHeight()));
}
}
finally
{
image2.dispose();
}
IMAGINGJAVA-865 Gif image is not properly converted to Png [Java]
String path = "transbugs.gif";
Image m_oDocument = Image.load(path);
try
{
int m_iResolution = 98;
PngOptions OptionsIM = new PngOptions();
OptionsIM.setColorType(PngColorType.TruecolorWithAlpha);
ResolutionSetting oResIM = new ResolutionSetting(m_iResolution, m_iResolution);
OptionsIM.setResolutionSettings(oResIM);
m_oDocument.save(path + ".png", OptionsIM);
}
finally
{
m_oDocument.dispose();
}
**IMAGINGJAVA-864 Incorrect number conversion in OpenDocument
Locale loc = new Locale( "ru", "RU" ) ;
Locale.setDefault( loc ) ;
String inputFileName = "D:\\Odg\\modifiersTest.odg";
String outputFileName = "D:\\Odg\\modifiersTest.pdf";
ImageOptionsBase options = new PdfOptions();
final OdgImage image = (OdgImage) Image.load(inputFileName);
try
{
options.setVectorRasterizationOptions(new MetafileRasterizationOptions()
{{
setPageWidth(image.getWidth());
setPageHeight(image.getHeight());
}});
image.save(outputFileName, options);
}
finally
{
image.dispose();
}
IMAGINGJAVA-862 Image exception on load Tiff image [Java]
String inputFileName = "D:\\posterUfficio_crop.tif";
String outFileName = "D:\\posterUfficio_crop.png";
Image image = Image.load(inputFileName);
try
{
image.save(outFileName, new PngOptions());
}
finally
{
image.dispose();
}
IMAGINGJAVA-859 Image saving failed when saving JPEG2000 as PNG [Java]
String inputImage = "Input.jp2";
String outputImage = "Ouput.png";
Image image = Image.load(inputImage);
try
{
image.save(outputImage, new PngOptions());
}
finally
{
image.dispose();
}
IMAGINGJAVA-858 Exception on converting emf to svg [Java]
String path = "C:\\Temp\\Errors\\";
Image image = Image.load(path + "powerpoint_emf.emf");
try
{
final EmfRasterizationOptions emfRasterizationOptions = new EmfRasterizationOptions();
emfRasterizationOptions.setBackgroundColor(Color.getWhite());
emfRasterizationOptions.setPageWidth(image.getWidth());
emfRasterizationOptions.setPageHeight(image.getHeight());
image.save(path + "owerpoint_emf.svg", new SvgOptions()
{{
setVectorRasterizationOptions(emfRasterizationOptions);
}});
}
finally
{
image.dispose();
}
IMAGINGJAVA-857 Fix PSD crop operation [Java]
PsdLoadOptions psdLoadOptions = new PsdLoadOptions();
psdLoadOptions.setLoadEffectsResource(true);
PsdImage image = (PsdImage)Image.load("MSFT_DevEva_Web_Twitter-800x320_2-DVG.PSD", psdLoadOptions);
try
{
Rectangle rect = new Rectangle(10, 30, 100, 100);
image.crop(rect);
image.save("MSFT_DevEva_Web_Twitter-800x320_2-DVG_new_ethalon.png", new PngOptions() {{ setColorType(PngColorType.TruecolorWithAlpha); }});
}
finally
{
image.dispose();
}
IMAGINGJAVA-856 Fix PSD test rendering for specific case [Java]
PsdImage image = (PsdImage)Image.load("1.psd");
try
{
image.save("1.png", new PngOptions() {{ setColorType(PngColorType.TruecolorWithAlpha); }});
}
finally
{
image.dispose();
}
IMAGINGJAVA-855 Exception on saving Tiff Image [Java]
String sourceFilePath = "Carelogic-1-11082017-3016-CH.tif";
String outputFilePath = "Carelogic-1-11082017-3016-CH Out.tif";
int resolution = 96; // Set the output resolution to some non-zero value!
RasterImage image = (RasterImage)Image.load(sourceFilePath);
try
{
TiffOptions saveOptions = new TiffOptions(TiffExpectedFormat.Default);
saveOptions.setResolutionSettings(new ResolutionSetting(resolution, resolution));
saveOptions.setCompression(TiffCompressions.None);
saveOptions.setBitsPerSample(new int[] { 1 });
int width = image.getWidth() * resolution / (int)image.getHorizontalResolution();
int height = image.getHeight() * resolution / (int)image.getVerticalResolution();
image.resize(width, height); // No more exception here!
image.save(outputFilePath, saveOptions);
}
finally
{
image.dispose();
}
IMAGINGJAVA-854 Gif not properly converted to png [Java]
String file = "6.gif";
Image image = Image.load(file);
try
{
image.save(file + ".png", new PngOptions());
}
finally
{
image.dispose();
}
IMAGINGJAVA-834 When PSD is converted to PNG, an ArgumentOutOfRangeException occurs
PsdImage input = (PsdImage)Image.load("Cloud_AzPlat_Banner3A_SB_EN_US_160x600.psd");
try
{
TextLayer textLayer;
for (Layer layer : input.getLayers())
{
if (layer instanceof TextLayer)
{
textLayer = (TextLayer)layer;
textLayer.updateText("123\u0003abc");
}
}
input.save("Cloud_AzPlat_Banner3A_SB_EN_US_160x600_updated.psd", new PsdOptions() {{ setCompressionMethod(CompressionMethod.RLE); }});
}
finally
{
input.dispose();
}
input = (PsdImage)Image.load("Cloud_AzPlat_Banner3A_SB_EN_US_160x600_updated.psd");
try
{
input.save("Cloud_AzPlat_Banner3A_SB_EN_US_160x600_updated.png", new PngOptions() {{ setColorType(PngColorType.TruecolorWithAlpha); }});
}
finally
{
input.dispose();
}
IMAGINGJAVA-783 Darker colors and color reproducibility
public void test783()
{
License l = new License();
l.setLicense("Aspose.Imaging.Java.lic");
String path = "C:\\Temp\\Errors\\783\\";
// Load Tiff image with embedded Icc
{
String embeddedIccProfileTiff = path + "Cmyk-CmykProfile.tif";
TiffImage image = (TiffImage) Image.load(embeddedIccProfileTiff);
try
{
// get icc by tag
TiffDataType tag = image.getActiveFrame().getFrameOptions().getTagByType(TiffTags.IccProfile);
byte[] profileStream = (byte[]) tag.getValue();
AssertProfile(profileStream);
// icc property
byte[] profileStream2 = image.getActiveFrame().getFrameOptions().getIccProfile();
// Must be the same
Compare(profileStream, profileStream2);
AssertProfile(profileStream2);
}
finally
{
image.dispose();
}
}
// Load Psd image with embedded Icc
{
String embeddedIccProfilePsd = path + "NavyExchangeCmyk.psd";
PsdImage image = (PsdImage) Image.load(embeddedIccProfilePsd);
try
{
com.aspose.imaging.system.io.MemoryStream profileStream = (com.aspose.imaging.system.io.MemoryStream)image.getCmykColorProfile().getStream();
AssertProfile(profileStream.toArray());
}
finally
{
image.dispose();
}
}
// Convert Psd image with embedded Cmyk Icc to Tiff with embedded Cmyk Icc
{
String embeddedIccProfilePsd = path + "NavyExchangeCmyk.psd";
final byte[] sourceIccData;
PsdImage image = (PsdImage) Image.load(embeddedIccProfilePsd);
try
{
TiffOptions options = new TiffOptions(TiffExpectedFormat.TiffLzwRgba);
// add Icc profile tag
sourceIccData = ((com.aspose.imaging.system.io.MemoryStream) image.getCmykColorProfile().getStream()).toArray();
TiffUndefinedType tmp = new TiffUndefinedType(TiffTags.IccProfile);
tmp.setData(sourceIccData);
options.addTag(tmp);
image.save(embeddedIccProfilePsd + "_output.tiff", options);
}
finally
{
image.dispose();
}
// verify
TiffImage image2 = (TiffImage) Image.load(embeddedIccProfilePsd + "_output.tiff");
try
{
byte[] profileStream = image2.getActiveFrame().getFrameOptions().getIccProfile();
AssertProfile(profileStream);
Assert.assertTrue(Compare(profileStream, sourceIccData));
}
finally
{
image2.dispose();
}
}
}
private void AssertProfile(byte[] profileStream)
{
msAssert.isNotNull(profileStream);
msAssert.isFalse(Compare(profileStream, IccProfileHelper.getDefaultCmykProfile()));
msAssert.isFalse(Compare(profileStream, IccProfileHelper.getDefaultRgbProfile()));
}
private boolean Compare(byte[] data1, byte[] data2)
{
if (data1.length != data2.length)
{
return false;
}
for (int i = 0; i < data2.length; i++)
{
if (data1[i] != data2[i])
{
return false;
}
}
return true;
}
static class IccProfileHelper
{
/**
\* <p>
\* The cmyk profile path.
\* </p>
*/
static final String CmykProfilePath = "com/aspose/imaging/internal/System/Drawing/rswop.icm";
/**
\* <p>
\* The rgb profile path.
\* </p>
*/
static final String RgbProfilePath = "com/aspose/imaging/internal/System/Drawing/sRGB_v4_ICC_preference_displayclass.icc";
static byte[] getDefaultCmykProfile()
{
return getResource(CmykProfilePath);
}
static byte[] getDefaultRgbProfile()
{
return getResource(RgbProfilePath);
}
private static byte[] getResource(String resourceName)
{
InputStream stream = com.aspose.imaging.Image.class.getClassLoader().getResourceAsStream(resourceName);
if (stream == null)
throw new RuntimeException("Error loading icc profile resource");
try
{
byte[] buffer = new /*Byte*/ byte[stream.available()];
stream.read(buffer);
return buffer;
}
catch (IOException e)
{
throw new FrameworkException("Error loading icc profile resource", e);
}
}
}
IMAGINGJAVA-618 Converting EMF to PNG in not producing correct outpout
String file = "image13.emf";
final Image image = Image.load(file);
try
{
final EmfRasterizationOptions vectorRasterizationOptions = new EmfRasterizationOptions()
{{
setPageWidth(image.getWidth());
setPageHeight(image.getHeight());
}};
image.save(file + ".Png", new PngOptions() {{
setVectorRasterizationOptions(vectorRasterizationOptions); }});
}
finally
{
image.dispose();
}
IMAGINGJAVA-510 Emf image export error
String filePath = "Picture1.emf";
String outPath = "Picture1";
Image mf = Image.load(filePath);
try
{
EmfRasterizationOptions emfRasterizationOptions = new EmfRasterizationOptions();
emfRasterizationOptions.setBackgroundColor(Color.getGray());
emfRasterizationOptions.setPageWidth(mf.getWidth());
emfRasterizationOptions.setPageHeight(mf.getHeight());
PngOptions pngOptions = new PngOptions();
pngOptions.setVectorRasterizationOptions(emfRasterizationOptions);
mf.save(outPath + "_IMAGINGNET-2007.png", pngOptions);
emfRasterizationOptions.setPageWidth(100);
emfRasterizationOptions.setPageHeight(100);
mf.save(outPath + "_IMAGINGNET-2007_small.png", pngOptions);
}
finally
{
mf.dispose();
}