Converting WEBP to JPG or PNG یک نیاز مکرر هنگام ادغام دارایی‌های تصویری در برنامه‌های Java است، به‌ویژه برای تحویل وب یا سازگاری با سیستم‌های قدیمی. Conholdate.Total for Java یک SDK قدرتمند فراهم می‌کند که این کار را با یک API تمیز ساده می‌کند. در این راهنما، پیاده‌سازی گام‌به‌گام، یک مثال کامل کد، و تمام جزئیات تنظیمات مورد نیاز برای شروع سریع را خواهید دید.

تبدیل WEBP به JPG یا PNG در جاوا - گام به گام

مراحل زیر جریان کار تبدیل WEBP به JPG یا PNG را با استفاده از Conholdate.Total for Java نشان می‌دهند. هر مرحله فراخوانی‌های API مربوطه را برجسته می‌کند، توضیح می‌دهد چرا تنظیمات مهم هستند و نکات عملکردی را بیان می‌کند.

گردش کار WEBP به JPG یا PNG

  1. راه‌اندازی Converter با فایل WEBP منبع - یک نمونه Converter ایجاد کنید که به فایل .webp شما اشاره کند. این شیء جریان منبع را مدیریت کرده و خط لوله تبدیل را آماده می‌کند.
String inputPath = "sample.webp";
try (Converter converter = new Converter(inputPath)) {
    // Converter ready for further actions
}
  1. پیکربندی گزینه‌های تبدیل JPEG - فرمت هدف را به JPEG تنظیم کنید، سطح کیفیت را تعریف کنید و پس‌زمینه سفید را فراهم کنید زیرا JPEG از شفافیت پشتیبانی نمی‌کند.
ImageConvertOptions jpgOptions = new ImageConvertOptions();
jpgOptions.setFormat(ImageSaveOptions.ImageFormat.JPEG);
jpgOptions.setQuality(90);
jpgOptions.setBackgroundColor(Color.WHITE);
  1. اجرای تبدیل JPEG - فراخوانی convert با مسیر خروجی و گزینه‌های JPEG. SDK فایل خروجی را در یک عبور می‌نویسد.
converter.convert("sample_converted.jpg", jpgOptions);
System.out.println("WEBP successfully converted to JPEG.");
  1. پیکربندی گزینه‌های تبدیل PNG - فرمت را به PNG تغییر دهید، حفظ شفافیت را فعال کنید و به‌صورت اختیاری سطح فشرده‌سازی را برای تعادل بین اندازه و سرعت تنظیم کنید.
ImageConvertOptions pngOptions = new ImageConvertOptions();
pngOptions.setFormat(ImageSaveOptions.ImageFormat.PNG);
pngOptions.setPreserveTransparency(true);
pngOptions.setCompressionLevel(6);
  1. اجرای تبدیل PNG - انجام تبدیل برای خروجی PNG که کانال آلفای اصلی را حفظ می‌کند.
converter.convert("sample_converted.png", pngOptions);
System.out.println("WEBP successfully converted to PNG.");

راه‌اندازی مبدل

کلاس Converter نقطهٔ ورودی برای تمام تبدیل‌های فرمت است. این کلاس به‌صورت خودکار نوع فایل منبع را تشخیص می‌دهد، بنابراین نیازی به مشخص کردن این‌که ورودی یک فایل WEBP است، ندارید. بلوک try‑with‑resources تضمین می‌کند که منابع بومی به‌سرعت آزاد شوند، که هنگام پردازش دسته‌های بزرگ بسیار مهم است.

پیکربندی گزینه‌های JPEG

فایل‌های JPEG از کانال آلفا پشتیبانی نمی‌کنند، بنابراین SDK برای پر کردن نواحی شفاف به یک رنگ پس‌زمینه نیاز دارد. تنظیم setBackgroundColor(Color.WHITE) تضمین می‌کند که تصویر حاصل یک بوم سفید تمیز داشته باشد، که یک نیاز رایج برای تصویرهای کوچک وب است. فراخوانی setQuality(90) تعادل بین وضوح بصری و حجم فایل را برقرار می‌کند؛ می‌توانید مقدار را بین 0 تا 100 بر حسب نیاز خود تنظیم کنید.

اجرای تبدیل JPEG

متد convert دو آرگومان می‌گیرد: مسیر فایل مقصد و شیء گزینه‌ها. به‌صورت داخلی، Conholdate.Total داده‌های تصویر را به‌صورت جریان می‌فرستد، تنظیمات انتخاب‌شده را اعمال می‌کند و خروجی را بدون ایجاد فایل‌های موقت روی دیسک می‌نویسد. این رویکرد بار I/O را به حداقل می‌رساند و سرعت تبدیل را افزایش می‌دهد.

پیکربندی گزینه‌های PNG

PNG از فشرده‌سازی بدون اتلاف و یک کانال آلفا پشتیبانی می‌کند. با فراخوانی setPreserveTransparency(true)، شفافیت اصلی حفظ می‌شود. گزینه‌ای setCompressionLevel(6) سطح فشرده‌سازی متوسطی (در بازه 0‑9) را انتخاب می‌کند که تعادل خوبی بین سرعت و حجم فایل فراهم می‌آورد.

اجرای تبدیل PNG

هنگامی که شما convert را با گزینه‌های PNG فراخوانی می‌کنید، SDK تصویری بدون افت کیفیت می‌نویسد که می‌تواند مستقیماً در مؤلفه‌های UI استفاده شود یا برای پردازش‌های بعدی ذخیره گردد. از آنجا که PNG اغلب برای آیکون‌ها و دارایی‌های UI استفاده می‌شود، حفظ کانال آلفا برای نگه داشتن کیفیت بصری ضروری است.

ملاحظات عملکرد

هر دو مسیر تبدیل از همان موتور زیرساختی استفاده می‌کنند، اما می‌توانید با ویژگی setPageSize مصرف حافظه را به‌دقت تنظیم کنید. برای JPEG اندازه صفحه را به 1 محدود می‌کنیم تا مصرف حافظه کم بماند، در حالی که برای PNG آن را به 0 تنظیم می‌کنیم تا تمام صفحات در یک دسته پردازش شوند، که برای تصاویر کوچک سریع‌تر است.

فرمتکیفیت / فشرده‌سازیحافظه به ازای هر صفحهسرعت معمولی
JPEGکیفیت 90کم (1 صفحه)سریع
PNGفشرده‌سازی 6بالاتر (0 صفحه)متوسط

انتخاب تنظیمات صحیح بستگی به سناریوی استقرار شما دارد. برای کارهای دسته‌ای سمت سرور، ممکن است ترجیح دهید که مصرف حافظه کمتر JPEG را داشته باشید. برای دارایی‌های UI که شفافیت مهم است، PNG با فشرده‌سازی متوسط معمولاً بهترین گزینه است.

مدیریت شفافیت برای خروجی PNG

مدیریت شفافیت منبع رایجی از باگ‌ها است. اگر فراموش کنید setPreserveTransparency(true) را فعال کنید، SDK تصویر را بر روی پس‌زمینهٔ سیاه صاف می‌کند که می‌تواند به نتایج بصری غیرمنتظره منجر شود. همیشه خروجی را با باز کردن PNG در یک نمایشگر تصویر که کانال‌های آلفا را نشان می‌دهد، بررسی کنید.

مثال کد جاوا برای تبدیل WEBP به JPG

اگر فقط به خروجی JPG نیاز دارید، می‌توانید بلوک PNG را به‌طور کامل حذف کنید. قطعه کد زیر یک مثال کد جاوا برای تبدیل WEBP به JPG به‌صورت حداقل نشان می‌دهد که از کلاس‌های یکسان SDK استفاده می‌کند.

try (Converter converter = new Converter("sample.webp")) {
    ImageConvertOptions jpgOptions = new ImageConvertOptions();
    jpgOptions.setFormat(ImageSaveOptions.ImageFormat.JPEG);
    jpgOptions.setQuality(85);
    jpgOptions.setBackgroundColor(Color.WHITE);
    converter.convert("sample_converted.jpg", jpgOptions);
}

این مثال مختصر نشان می‌دهد که چگونه SDK به شما امکان می‌دهد بر منطق تبدیل تمرکز کنید بدون اینکه با کد پردازش تصویر سطح پایین سروکار داشته باشید.

مثال کامل کد: تبدیل WEBP به JPG یا PNG با Conholdate.Total

مثال زیر کل جریان کار را از بارگذاری یک فایل WEBP تا تولید نتایج JPEG و PNG با استفاده از Conholdate.Total SDK نشان می‌دهد. این مثال یک تبدیل WEBP به JPG یا PNG را در یک اجرا انجام می‌دهد و کیفیت، شفافیت و بهینه‌سازی‌های حافظه را مدیریت می‌کند.

import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.ImageConvertOptions;
import com.groupdocs.conversion.options.save.ImageSaveOptions;
import java.awt.Color;

public class WebpToImage {
    public static void main(String[] args) {
        // Input WEBP file (replace with your actual path)
        String inputPath = "sample.webp";

// Output files
        String outputJpgPath = "sample_converted.jpg";
        String outputPngPath = "sample_converted.png";

// ---------- Convert WEBP to JPEG ----------
        try (Converter converter = new Converter(inputPath)) {
            ImageConvertOptions jpgOptions = new ImageConvertOptions();
            // Set target format
            jpgOptions.setFormat(ImageSaveOptions.ImageFormat.JPEG);
            // JPEG quality (0‑100)
            jpgOptions.setQuality(90);
            // JPEG does not support transparency – fill with white background
            jpgOptions.setBackgroundColor(Color.WHITE);
            // Optional performance tweak: limit memory usage per page
            jpgOptions.setPageSize(1);
            converter.convert(outputJpgPath, jpgOptions);
            System.out.println("WEBP successfully converted to JPEG: " + outputJpgPath);
        } catch (Exception e) {
            System.err.println("Error converting WEBP to JPEG:");
            e.printStackTrace();
        }

// ---------- Convert WEBP to PNG ----------
        try (Converter converter = new Converter(inputPath)) {
            ImageConvertOptions pngOptions = new ImageConvertOptions();
            // Set target format
            pngOptions.setFormat(ImageSaveOptions.ImageFormat.PNG);
            // Preserve alpha channel (transparency)
            pngOptions.setPreserveTransparency(true);
            // Optional: set compression level (0‑9, where 9 is max compression)
            pngOptions.setCompressionLevel(6);
            // Optional performance tweak: process all pages in a single batch
            pngOptions.setPageSize(0);
            converter.convert(outputPngPath, pngOptions);
            System.out.println("WEBP successfully converted to PNG: " + outputPngPath);
        } catch (Exception e) {
            System.err.println("Error converting WEBP to PNG:");
            e.printStackTrace();
        }
    }
}

توجه: این مثال کد عملکرد اصلی را نشان می‌دهد. قبل از استفاده از آن در پروژه خود، مطمئن شوید که مسیرهای فایل و مقادیر پیکربندی را به‌گونه‌ای به‌روز کنید که با محیط واقعی شما مطابقت داشته باشد، اطمینان حاصل کنید که تمام وابستگی‌های مورد نیاز به‌درستی نصب شده‌اند و به‌طور کامل در محیط توسعه خود تست کنید. اگر با مشکلی مواجه شدید، لطفاً به مستندات رسمی مراجعه کنید یا برای دریافت کمک به تیم پشتیبانی مراجعه نمایید.

آماده‌سازی محیط

برای شروع استفاده از Conholdate.Total for Java، مخزن Maven و وابستگی SDK را به فایل pom.xml خود اضافه کنید. این کتابخانه با Java 8 یا بالاتر کار می‌کند و نیازی به باینری‌های بومی اضافی ندارد.

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

می‌توانید باینری‌های جدید SDK را از صفحه دانلود دریافت کنید. پس از افزودن وابستگی، دستور mvn clean install را اجرا کنید تا JARها به مخزن محلی شما کشیده شوند. SDK همچنین شامل کلاس License است که باید آن را با یک فایل لایسنس معتبر برای استفاده در محیط تولید مقداردهی اولیه کنید؛ یک لایسنس موقت برای ارزیابی در دسترس است.

چون Conholdate.Total به عنوان یک کتابخانهٔ جاوا برای تبدیل WEBP به PNG عمل می‌کند، می‌توانید آن را مستقیماً در هر بک‌اند مبتنی بر جاوا، برنامهٔ دسکتاپ یا میکروسرویس بدون سرویس‌های خارجی جاسازی کنید. این باعث می‌شود برای خطوط لولهٔ تصویر با توان پردازش بالا که تأخیر و کنترل حیاتی هستند، ایده‌آل باشد.

نکات کلیدی

  • تبدیل WEBP به JPG یا PNG در جاوا به‌صورت ساده‌ای با Conholdate.Total for Java انجام می‌شود، که جزئیات خاص فرمت‌ها مانند پر کردن پس‌زمینه JPEG و حفظ شفافیت PNG را مدیریت می‌کند.
  • SDK به شما امکان تنظیم دقیق کیفیت، فشرده‌سازی و مصرف حافظه را از طریق ImageConvertOptions می‌دهد و کنترل بر عملکرد و اندازه خروجی را در اختیار شما می‌گذارد.
  • یک وابستگی Maven واحد تمام قابلیت‌های تبدیل را به پروژه شما می‌آورد و همان کد برای هر دو هدف JPG و PNG کار می‌کند، که باعث کاهش تلاش نگهداری می‌شود.
  • این کتابخانه به‌عنوان کتابخانهٔ java برای تبدیل WEBP به PNG عمل می‌کند، بنابراین می‌توانید آن را بدون نیاز به بسته‌های اضافی در جریان‌های کاری پردازش تصویر موجود ادغام کنید.
  • به‌خاطر داشته باشید که برای استفاده در تولید، باید یک لایسنس تجاری مناسب دریافت کنید. می‌توانید یک لایسنس موقت را از صفحه لایسنس موقت درخواست کنید و قیمت‌ها را در صفحه قیمت‌گذاری بررسی کنید.
  • با خودکار شدن تبدیل WEBP به JPG یا PNG، می‌توانید آن را در خطوط پردازش بزرگ‌تر، مانند بهینه‌سازهای دسته‌ای تصویر، سیستم‌های مدیریت محتوا یا تولیدکنندگان تصویر بندانگشتی لحظه‌ای، ادغام کنید.

سوالات متداول

چگونه می‌توانم یک تصویر WEBP را به JPG یا PNG با استفاده از Java تبدیل کنم؟
از کلاس Converter در Conholdate.Total for Java استفاده کنید. فرمت مورد نظر ImageSaveOptions.ImageFormat (JPEG یا PNG) را تنظیم کنید و با مسیر خروجی، متد convert را فراخوانی کنید.

آیا کتابخانهٔ جاوا برای تبدیل WEBP به PNG وجود دارد که شفافیت را حفظ کند؟
بله، همان SDK گزینهٔ setPreserveTransparency(true) را برای خروجی PNG فراهم می‌کند که اطمینان می‌دهد کانال آلفا حفظ شود.

برای استقرارهای تولیدی چه مجوزی لازم است؟
یک مجوز تجاری لازم است. مجوز موقت را از صفحه صفحه مجوز موقت دریافت کنید و قیمت‌گذاری کامل را در صفحه صفحه قیمت‌گذاری مشاهده کنید.

آیا می‌توانم بسیاری از فایل‌های WEBP را به صورت دسته‌ای پردازش کنم؟
به‌طور قطع. منطق تبدیل را داخل یک حلقه قرار دهید و برای هر فایل از نمونه Converter استفاده مجدد کنید. SDK به‌صورت مؤثر حافظه را مدیریت می‌کند، به‌ویژه زمانی که setPageSize را برای پردازش دسته‌ای تنظیم می‌کنید.

بهترین روش برای مدیریت خودکار مقیاس بزرگ تبدیل WEBP به JPG یا PNG چیست؟
تبدیل را به عنوان یک گردش کار WEBP به JPG یا PNG در نظر بگیرید: منبع را بارگذاری کنید، گزینه‌ها را یک بار پیکربندی کنید و همان شیء Converter را در بین فایل‌ها دوباره استفاده کنید. این کار بار ایجاد شیء را کاهش می‌دهد و بازدهی را به حداکثر می‌رساند.

مطالعه بیشتر