کتابخانه رایگان ایجاد و پردازش تصویر جاوا
یک API منبع باز پردازش تصویر جاوا مفید که امکان ایجاد خواندن، نوشتن، تغییر اندازه، برش، افزودن واترمارک و تبدیل تصاویری مانند PNG، JPEG، BMP، TIFF، ICO و بسیاری موارد دیگر را فراهم میکند.
در دنیای بینایی کامپیوتر، کتابخانهها نقشی حیاتی در سادهسازی فرآیند تحلیل تصویر و ویدئو دارند. یکی از این کتابخانهها که در سالهای اخیر مورد توجه قرار گرفته است، ICAFE، یک کتابخانه منبع باز است که توسط Dragon66 توسعه یافته است. ICAFE از فرمت های تصویری محبوب مانند JPEG، PNG، BMP، TIFF، GIF و حتی فرمت های RAW از دوربین های دیجیتال پشتیبانی می کند. این یک کتابخانه قدرتمند و همه کاره جاوا برای پردازش تصویر است که قابلیت های غنی و ویژگی های مختلف پایه و همچنین پیشرفته را برای کار با تصاویر ارائه می دهد، مانند ایجاد تصاویر جدید، تبدیل تصویر بین فرمت های مختلف، کار با متادیتای تصویر، ایجاد GIF متحرک، ادغام یا تقسیم تصاویر، حذف یا افزودن تکهها به PNG، فشردهسازی تصاویر یا تبدیل بین فرمتها، اعمال فیلترها بر روی تصاویر و غیره.
ICAFE (تصویر و دوربین برای همه) یک کتابخانه جاوا منبع باز است که کار با تصاویر را ساده می کند و ویژگی های مختلفی را برای پردازش، رمزگذاری، رمزگشایی و استخراج فراداده در برنامه های جاوا ارائه می دهد. ICAFE که در اصل برای پردازش تصویر طراحی شده بود، برای پشتیبانی از طیف گسترده ای از فرمت ها، از جمله توانایی پردازش نمودارها، تکامل یافته است. ICAFE با API انعطافپذیر و پشتیبانی از فرمتهای تصویری متعدد، ابزارهای مورد نیاز توسعهدهندگان نرمافزار را برای ایجاد برنامههای کاربردی قدرتمند، بهویژه برای کار با نمودارها، فراهم میکند. علاوه بر این، توسعه دهندگان نرم افزار می توانند از کتابخانه برای وارد کردن نمودارها از فرمت های مختلف، دستکاری آنها و سپس صادرات آنها به فرمت مورد نظر استفاده کنند. ICAFE با سهولت استفاده، مجموعه ای قوی از ویژگی ها، پشتیبانی از چند فرمت و انعطاف پذیری، یک منبع عالی و ارزشمند در جعبه ابزار هر توسعه دهنده ای است.
آغاز با ICAFE
سادهترین و توصیهشده برای نصب ICAFE از طریق GitHub است.
ICAFE را از طریق GitHub نصب کنید
go get -u https://github.com/dragon66/icafe.git
فشرده سازی و تبدیل تصویر
کتابخانه منبع باز ICAFE خواندن و فشرده سازی انواع مختلف تصاویر را ساده می کند، که هنگام کار با فایل های بزرگ یا بهینه سازی برنامه های کاربردی وب بسیار مهم است. این کتابخانه امکان فشرده سازی بدون اتلاف و فشرده سازی تصاویر را فراهم می کند. در اینجا مثالی وجود دارد که نشان میدهد چگونه توسعهدهندگان نرمافزار میتوانند از کد برای فشردهسازی یک تصویر JPEG ورودی استفاده کنند و آن را با کیفیت ۷۵ درصد ذخیره کنند. کلاس JPEGEncoder ICAFE فشرده سازی تصویر را ساده می کند، که می تواند متناسب با نیازهای برنامه تنظیم شود.
چگونه تصاویر یک تصویر JPEG را در برنامه های 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!");
}
}
استخراج فراداده از طریق برنامه های جاوا
کتابخانه ICAFE از استخراج و دستکاری فراداده های تصویر مانند EXIF، IPTC و XMP پشتیبانی می کند. این به ویژه هنگام برخورد با تصاویر دوربین یا نمودارهایی که به اطلاعات اضافی مانند مُهر زمان، دادههای مکان یا جزئیات حق چاپ نیاز دارند، مفید است. در مثال کد زیر، ICAFE فراداده EXIF را از یک فایل JPEG میخواند و جزئیات مربوط به مدل دوربین و تاریخ ثبت عکس را بازیابی میکند. این را می توان برای مدیریت تگ های متادیتا دیگر گسترش داد و آن را به ابزاری عالی برای مدیریت مجموعه های تصویر تبدیل کرد.
چگونه از طریق Java API فراداده EXIF را از یک فایل JPEG بارگیری و خواندن و استخراج کنیم؟
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!");
}
}
}
دستکاری (تغییر اندازه، برش، فیلترها) تصاویر از طریق جاوا
کتابخانه منبع باز ICAFE خواندن و دستکاری انواع مختلف تصاویر در برنامه های جاوا را برای توسعه دهندگان نرم افزار آسان می کند. این کتابخانه به طور کامل از دستکاری آسان تصاویر، از جمله تغییر اندازه، برش، اعمال فیلترها و موارد دیگر پشتیبانی می کند. در کد زیر، توسعه دهندگان نرم افزار می توانند اندازه یک تصویر را با حفظ نسبت ابعاد آن تغییر دهند. قابلیت های دستکاری ICAFE به توسعه دهندگان نرم افزار امکان می دهد تا به راحتی عملکردهای پردازش تصویر را در نرم افزار خود ادغام کنند.
چگونه تصاویر را از طریق 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!");
}
}
از طریق Java API واترمارک روی تصاویر اعمال شود؟
افزودن واترمارک به تصاویر با کتابخانه ICAFE ساده است. این ویژگی برای محافظت از مالکیت معنوی، به ویژه در برنامه هایی که با نمودارها یا دارایی های طراحی سروکار دارند، مفید است. مثال کد زیر نشان میدهد که چگونه یک واترمارک متنی را روی یک تصویر قرار دهید و از محافظت از نمودارها یا تصاویر اطمینان حاصل کنید.
چگونه از طریق 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!");
}
}