Manipulace s PNG obrázky
Specifikace průhlednosti pro PNG obrázky
Jednou z výhod ukládání obrázků ve formátu PNG je možnost mít průhledné pozadí. Aspose.PSD pro Jav využívá funkci pro specifikaci průhlednosti pro třídy PngImage & RasterImage, jak je ukázáno v následující sekci. API Aspose.PSD pro Jav může být použito k nastavení libovolné barvy jako průhledné při vytváření nových PNG obrázků nebo převádění existujících obrázků do formátu PNG. Pro tyto účely API Aspose.PSD pro Jav poskytuje vlastnost TransparentColor a výčet PngColorType, který lze nastavit pro specifikaci jakékoliv barvy, která bude vykreslena jako průhledná v PNG obrázku. Následující kódový úryvek ukazuje, jak převést existující obrázek PSD na obrázek PNG pomocí přetíženého konstruktoru PngImage a specifikovat požadovanou barvu jako průhlednou.
String dataDir = Utils.getDataDir(SpecifyTransparency.class) + "ModifyingAndConvertingImages/"; | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd"); | |
// Initialize PNG image with psd image pixel data. | |
PsdImage pngImage = new PsdImage(psdImage)) { | |
// specify the PNG image transparency options and save to file. | |
pngImage.setTransparentColor(Color.getWhite()); | |
pngImage.setTransparentColor(true); | |
pngImage.save(dataDir + "Specify_Transparency_result.png"); | |
} |
Nastavení rozlišení pro PNG obrázky
Aspose.PSD pro Jav poskytuje třídu ResolutionSetting, která může být použita k nastavení rozlišení pro všechny formáty obrázků včetně PNG. Tento článek demonstruje použití API Aspose.PSD pro Jav k nastavení parametrů horizontálního a vertikálního rozlišení pro formát obrázku PNG. Následující kódový úryvek načítá existující obrázek PSD a konvertuje jej do formátu PNG, změňuje také rozlišení.
String dataDir = Utils.getDataDir(SettingResolution.class) + "ModifyingAndConvertingImages/"; | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
// Create an instance of PngOptions, Set the horizontal & vertical resolutions and Save the result on disc | |
PngOptions options = new PngOptions(); | |
options.setResolutionSettings(new ResolutionSetting(72, 96)); | |
psdImage.save(dataDir + "SettingResolution_output.png", options); | |
} |
Komprimace souborů PNG
Formát Portable Network Graphic (PNG) je ztrátově komprimovaný formát pro přenos bitmapy po sítích. Když uložíte obrázek jako soubor PNG v jakémkoli programu, může se vás požádat, abyste vybrali úroveň komprese v rozmezí od 0 do jakékoli maximální úrovně. Nastavení této hodnoty ve skutečnosti komprimuje velikost souboru a doopravdy neovlivňuje kvalitu obrázku. Tento článek popisuje, jak API Aspose.PSD umožňuje kontrolovat velikost souboru PNG. API Aspose.PSD může být použito k nastavení kompresní úrovně pro formát souboru PNG pomocí třídy PngOptions, která má vlastnost CompressionLevel typu int. Tato vlastnost přijímá hodnotu od 0 do 9, kde 9 je maximální komprese. Následující kódový úryvek ukazuje, jak nastavit kompresní úrovně pomocí API Aspose.PSD pro Jav.
String dataDir = Utils.getDataDir(ApplyFilterMethod.class) + "ModifyingAndConvertingImages/"; | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
// Loop over possible CompressionLevel range | |
for (int i = 0; i <= 9; i++) { | |
// Create an instance of PngOptions for each resultant PNG, Set CompressionLevel and Save result on disk | |
PngOptions options = new PngOptions(); | |
options.setCompressionLevel(i); | |
psdImage.save(dataDir + i + "_out.png", options); | |
} | |
} |
Specifikace barevné hloubky pro PNG obrázky
Barevná hloubka v obrazové technice je počet bitů použitých k indikaci barvy jednoho pixelu v mapě bitů. Stejně jako u všech ostatních bitmapových formátů je barva PNG také vyjádřena v bitech, například 1 bit (2 barvy), 2 bity (4 barvy), 4 bity (16 barev) a 8 bitů (256 barev). API Aspose.PSD pro Jav může být použito k nastavení barevné hloubky pro PNG obrázky pomocí vlastnosti BitDepth, kterou má třída PngOptions. V současné době lze vlastnost BitDepth nastavit na 1, 2, 4 nebo 8 bitů pro stupně šedi a indexované barevné typy. Pro všechny ostatní typy barev jsou podporovány pouze 8 bitů. Následující kódový úryvek ukazuje, jak nastavit barevnou hloubku pro PNG obrázek.
String dataDir = Utils.getDataDir(SpecifyBitDepth.class) + "ModifyingAndConvertingImages/"; | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
// Create an instance of PngOptions, Set the desired ColorType, BitDepth according to the specified ColorType and save image | |
PngOptions options = new PngOptions(); | |
options.setColorType(PngColorType.Grayscale); | |
options.setBitDepth((byte) 1); | |
psdImage.save(dataDir + "SpecifyBitDepth_out.png", options); | |
} |
Použití metody filtru na obrázky PNG
Aspose.PSD pro Jav poskytuje výčet PngFilterType, který může být použit k nastavení typu filtru pro obrázek PNG. Následující kódový úryvek ukazuje, jak aplikovat filtr na existující soubor PSD na obrázek PNG pomocí PngFilterType.
String dataDir = Utils.getDataDir(ApplyFilterMethod.class) + "ModifyingAndConvertingImages/"; | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
// Create an instance of PngOptions, Set the PNG filter method and Save changes to the disc | |
PngOptions options = new PngOptions(); | |
options.setFilterType(PngFilterType.Paeth); | |
psdImage.save(dataDir + "ApplyFilterMethod_out.png", options); | |
} |
Změna barvy pozadí průhledného obrázku PNG
Obrázky ve formátu PNG mohou mít průhledné pozadí. Aspose.PSD pro Jav poskytuje možnost změnit barvu pozadí pro PNG obrázek s průhledným pozadím. API Aspose.PSD pro Jav může být použito k nastavení/změně barvy průhledného PNG obrázku. Následující kódový úryvek ukazuje, jak nastavit/změnit barvu pozadí průhledného PNG obrázku.
String dataDir = Utils.getDataDir(ChangeBackgroundColor.class) + "ModifyingAndConvertingImages/"; | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd"); | |
// Convert to PngImage based on PsdImage. | |
PsdImage pngImage = new PsdImage(psdImage)) { | |
int[] pixels = pngImage.loadArgb32Pixels(pngImage.getBounds()); | |
// Iterate through the pixel array and Check the pixel information | |
//that if it is a transparent color pixel and Change the pixel color to white | |
int transparent = pngImage.getTransparentColor().toArgb(); | |
int replacementColor = Color.getYellow().toArgb(); | |
for (int i = 0; i < pixels.length; i++) { | |
if (pixels[i] == transparent) { | |
pixels[i] = replacementColor; | |
} | |
} | |
// Replace the pixel array into the image. | |
pngImage.saveArgb32Pixels(pngImage.getBounds(), pixels); | |
pngImage.save(dataDir + "ChangeBackground_out.png"); | |
} |