Knihovna pro vytváření a zpracování obrázků v jazyce Java
Užitečné Open Source Java Image Processing API, které umožňuje vytvářet čtení, zápis, měnit velikost, ořezávat, přidávat vodoznaky a převádět obrázky jako PNG, JPEG, BMP, TIFF, ICO a mnoho dalších.
Ve světě počítačového vidění hrají knihovny zásadní roli při zjednodušování procesu analýzy obrazu a videa. Jednou z takových knihoven, která si v posledních letech získala významnou pozornost, je ICAFE, open-source knihovna vyvinutá společností Dragon66. ICAFE podporuje oblíbené obrazové formáty jako JPEG, PNG, BMP, TIFF, GIF a dokonce i RAW formáty z digitálních fotoaparátů. Jedná se o výkonnou, všestrannou Java knihovnu pro zpracování obrázků, která nabízí bohatou funkčnost a různé základní i pokročilé funkce pro práci s obrázky, jako je vytváření nových obrázků, konverze obrázků mezi různými formáty, práce s metadaty obrázků, vytváření animovaných GIF, slučování nebo rozdělení obrázků, odstranění nebo přidání částí do PNG, komprimaci obrázků nebo převod mezi formáty, použití filtrů na obrázky a tak dále.
ICAFE (Image & Camera Acquisition for Everyone) je open source Java knihovna, která zjednodušuje práci s obrázky a nabízí různé funkce pro zpracování, kódování, dekódování a extrakci metadat v aplikacích Java. Původně navržený pro zpracování obrázků, ICAFE se vyvinul tak, aby podporoval širokou škálu formátů, včetně schopnosti zpracovávat diagramy. Díky flexibilnímu rozhraní API a podpoře více formátů obrázků poskytuje ICAFE vývojářům softwaru nástroje, které potřebují k vytváření výkonných aplikací, zejména pro práci s diagramy. Kromě toho mohou vývojáři softwaru používat knihovnu k importu diagramů z různých formátů, manipulaci s nimi a poté je exportovat do požadovaného formátu. Díky snadnému použití, robustní sadě funkcí, podpoře více formátů a flexibilitě je ICAFE vynikajícím a cenným zdrojem v jakékoli sadě nástrojů pro vývojáře.
Začínáme s ICAFE
Nejjednodušší a doporučený způsob instalace ICAFE je přes GitHub.
Nainstalujte ICAFE přes GitHub
go get -u https://github.com/dragon66/icafe.git
Komprese a konverze obrázků
Open source knihovna ICAFE usnadňuje čtení a komprimaci různých typů obrázků, což je zásadní při práci s velkými soubory nebo optimalizaci webových aplikací. Knihovna umožňuje bezeztrátovou i ztrátovou kompresi obrázků. Zde je příklad, který ukazuje, jak mohou vývojáři softwaru použít kód pro kompresi vstupního obrázku JPEG a uložit jej v 75% kvalitě. Třída JPEGEncoder ICAFE zjednodušuje kompresi obrázků, kterou lze vyladit tak, aby vyhovovala potřebám aplikace.
Jak komprimovat obrázky ve formátu JPEG v aplikacích Node.js?
import com.icafe4j.image.jpeg.JPEGEncoder;
import java.io.File;
import java.io.IOException;
public class ImageCompressionExample {
public static void main(String[] args) throws IOException {
File inputFile = new File("input.jpg");
File outputFile = new File("compressed_output.jpg");
// Compress JPEG with 75% quality
JPEGEncoder.encode(inputFile, outputFile, 0.75f);
System.out.println("Image compressed successfully!");
}
}
Extrakce metadat prostřednictvím aplikací Java
Knihovna ICAFE podporuje extrakci a manipulaci s metadaty obrázků, jako jsou EXIF, IPTC a XMP. To je užitečné zejména při práci s obrázky nebo diagramy z kamer, které vyžadují další informace, jako jsou časová razítka, údaje o poloze nebo podrobnosti o autorských právech. V následujícím příkladu kódu ICAFE načte metadata EXIF ze souboru JPEG a načte podrobnosti o modelu fotoaparátu a datu pořízení fotografie. To lze rozšířit tak, aby zpracovávalo různé další značky metadat, což z něj činí vynikající nástroj pro správu kolekcí obrázků.
Jak načíst a číst a extrahovat metadata EXIF ze souboru JPEG prostřednictvím rozhraní Java API?
import com.icafe4j.image.metadata.Metadata;
import com.icafe4j.image.metadata.exif.Exif;
import com.icafe4j.image.jpeg.JPEGMetadataReader;
import java.io.File;
import java.io.IOException;
public class MetadataExample {
public static void main(String[] args) throws IOException {
File imageFile = new File("input.jpg");
// Extract EXIF metadata from a JPEG file
Metadata metadata = JPEGMetadataReader.readMetadata(imageFile);
Exif exif = (Exif) metadata.getExif();
if (exif != null) {
System.out.println("Camera Model: " + exif.getCameraModel());
System.out.println("Date Taken: " + exif.getDateTime());
} else {
System.out.println("No EXIF metadata found!");
}
}
}
Manipulace s obrázky (změna velikosti, oříznutí, filtry) pomocí Javy
Open source knihovna ICAFE usnadňuje vývojářům softwaru čtení a manipulaci s různými typy obrázků v aplikacích Java. Knihovna plně podporuje snadnou manipulaci s obrázky, včetně změny velikosti, oříznutí, použití filtrů a dalších. V následujícím fragmentu kódu mohou vývojáři softwaru změnit velikost obrázku při zachování jeho poměru stran. Manipulační možnosti ICAFE umožňují vývojářům softwaru snadno integrovat funkce zpracování obrazu do jejich softwaru.
Jak načíst a změnit velikost obrázků pomocí Java API?
public class ResizeImageExample {
public static void main(String[] args) throws IOException {
BufferedImage originalImage = ImageIO.read(new File("input.jpg"));
// Resize the image to a width of 300 and maintain aspect ratio
Image resizedImage = originalImage.getScaledInstance(300, -1, Image.SCALE_SMOOTH);
BufferedImage resizedBufferedImage = new BufferedImage(300, resizedImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = resizedBufferedImage.createGraphics();
g2d.drawImage(resizedImage, 0, 0, null);
g2d.dispose();
// Save the resized image
ImageIO.write(resizedBufferedImage, "jpg", new File("resized_output.jpg"));
System.out.println("Image resized successfully!");
}
}
Použít vodoznak na obrázky prostřednictvím Java API?
Přidávání vodoznaků do obrázků je s knihovnou ICAFE jednoduché. Tato funkce je užitečná pro ochranu duševního vlastnictví, zejména v aplikacích, které pracují s diagramy nebo návrhovými prostředky. Následující příklad kódu ukazuje, jak překrýt textový vodoznak na obrázek a zajistit tak ochranu vašich diagramů nebo obrázků.
Jak překrýt textový vodoznak na obrázek prostřednictvím rozhraní Java API?
public class WatermarkExample {
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("input.jpg"));
// Add a text watermark
TextWatermark watermark = new TextWatermark("Watermark", 50);
BufferedImage watermarkedImage = watermark.apply(image);
// Save the watermarked image
ImageIO.write(watermarkedImage, "jpg", new File("watermarked_output.jpg"));
System.out.println("Watermark applied successfully!");
}
}