تبدیل فایل‌های PSD به تصاویر JPG یک نیاز مکرر هنگام آماده‌سازی دارایی‌ها برای وب یا برنامه‌های موبایل است. Conholdate.Total for Java یک SDK قدرتمند ارائه می‌دهد که به راحتی اسناد پیچیده Photoshop را مدیریت می‌کند. این راهنما شما را در تبدیل PSD به JPG در Java قدم به قدم راهنمایی می‌کند و به تنظیمات، کد و نکات عملکرد می‌پردازد.

تبدیل PSD به JPG در جاوا در 5 مرحله

  1. افزودن وابستگی Maven: مخزن Conholdate.Total و آرشیو SDK را در فایل pom.xml خود اضافه کنید.
<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>
  1. تعریف مسیرهای ورودی و خروجی: منبع فایل PSD و فایل هدف JPG را تنظیم کنید.
private static final String INPUT_PSD_PATH = "sample.psd";
private static final String OUTPUT_JPG_PATH = "sample.jpg";
  1. مقداردهی اولیه مبدل: یک نمونه Converter را از یک InputStream ایجاد کنید.
Path input = Paths.get(INPUT_PSD_PATH);
try (InputStream inputStream = Files.newInputStream(input)) {
    Converter converter = new Converter(inputStream);
    // ...
}
  1. پیکربندی گزینه‌های JPG: کیفیت JPEG و شماره صفحه را با استفاده از JpgConvertOptions تنظیم کنید.
JpgConvertOptions options = new JpgConvertOptions();
options.setQuality(90);          // JPEG quality (0‑100)
options.setPageNumber(0);        // PSD files have a single page
  1. اجرای تبدیل ناهمزمان و اعتبارسنجی: تبدیل را در یک CompletableFuture اجرا کنید و اندازه فایل خروجی را تأیید کنید.
CompletableFuture<Boolean> conversionFuture = CompletableFuture.supplyAsync(() -> {
    try {
        return convertPSDToJPG(INPUT_PSD_PATH, OUTPUT_JPG_PATH);
    } catch (Exception e) {
        System.err.println("Conversion failed: " + e.getMessage());
        return false;
    }
});

boolean success = conversionFuture.get();
if (success && validateOutput(OUTPUT_JPG_PATH)) {
    System.out.println("PSD successfully converted to JPG: " + OUTPUT_JPG_PATH);
}

برای اطلاعات دقیق API، به مرجع کلاس Converter مراجعه کنید.

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

کد زیر یک پیاده‌سازی کامل و آماده‌به‌کار برای تبدیل PSD به JPG با استفاده از Conholdate.Total for Java را نشان می‌دهد.

import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.JpgConvertOptions;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class PSDToJPGConverter {

private static final String INPUT_PSD_PATH = "sample.psd";
    private static final String OUTPUT_JPG_PATH = "sample.jpg";

public static void main(String[] args) {
        try {
            // Asynchronous conversion to keep UI thread responsive or to parallelize work
            CompletableFuture<Boolean> conversionFuture = CompletableFuture.supplyAsync(() -> {
                try {
                    return convertPSDToJPG(INPUT_PSD_PATH, OUTPUT_JPG_PATH);
                } catch (Exception e) {
                    System.err.println("Conversion failed: " + e.getMessage());
                    return false;
                }
            });

// Wait for conversion to finish and get the result
            boolean success = conversionFuture.get();

// Validate output
            if (success && validateOutput(OUTPUT_JPG_PATH)) {
                System.out.println("PSD successfully converted to JPG: " + OUTPUT_JPG_PATH);
            } else {
                System.err.println("Conversion completed but output validation failed.");
            }
        } catch (InterruptedException | ExecutionException e) {
            System.err.println("Error during asynchronous processing: " + e.getMessage());
        }
    }

/**
     * Converts a PSD file to JPG using streams to minimise memory consumption.
     *
     * @param inputPath  Path to the source PSD file.
     * @param outputPath Desired path for the resulting JPG file.
     * @return true if conversion succeeded, false otherwise.
     * @throws IOException if file operations fail.
     */
    private static boolean convertPSDToJPG(String inputPath, String outputPath) throws IOException {
        Path input = Paths.get(inputPath);
        Path output = Paths.get(outputPath);

if (!Files.exists(input) || !Files.isReadable(input)) {
            System.err.println("Input file does not exist or is not readable: " + inputPath);
            return false;
        }

// Ensure the output directory exists
        if (output.getParent() != null) {
            Files.createDirectories(output.getParent());
        }

long startTime = System.nanoTime();

// Use try‑with‑resources to guarantee stream closure
        try (InputStream inputStream = Files.newInputStream(input);
             OutputStream outputStream = Files.newOutputStream(output)) {

// Initialise the Conholdate.Total converter with the input stream
            Converter converter = new Converter(inputStream);

// Configure JPG conversion options
            JpgConvertOptions options = new JpgConvertOptions();
            options.setQuality(90); // Set JPEG quality (0‑100)
            options.setPageNumber(0); // PSD files contain a single page; 0 is the default

// Perform conversion directly to the output stream
            converter.convert(outputStream, options);
        } catch (Exception ex) {
            System.err.println("Exception during conversion: " + ex.getMessage());
            return false;
        }

long durationMs = (System.nanoTime() - startTime) / 1_000_000;
        System.out.println("Conversion completed in " + durationMs + " ms.");
        return true;
    }

/**
     * Simple validation to ensure the JPG file was created and is not empty.
     *
     * @param outputPath Path to the generated JPG file.
     * @return true if the file exists and has a size greater than zero.
     */
    private static boolean validateOutput(String outputPath) {
        Path output = Paths.get(outputPath);
        try {
            return Files.exists(output) && Files.size(output) > 0;
        } catch (IOException e) {
            System.err.println("Failed to validate output file: " + e.getMessage());
            return false;
        }
    }
}

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

Conholdate.Total for Java - پیش‌نیازها و راه‌اندازی

برای شروع استفاده از SDK، به Java 8 یا بالاتر و یک سیستم ساخت سازگار با Maven نیاز دارید. آخرین کتابخانه را از صفحهٔ رسمی انتشار دانلود کنید.

# Download the latest JARs (optional if using Maven)
curl -L -o conholdate-total.jar https://releases.conholdate.com/total/java/conholdate-total-24.9.jar

مخزن Maven و وابستگی نشان داده شده در بالا را به pom.xml خود اضافه کنید. هیچ پیش‌نیاز زمان اجرا اضافی مورد نیاز نیست، اما برای استفاده در محیط تولید یک مجوز معتبر لازم است.

چه چیزی Conholdate.Total for Java را برای تبدیل PSD به JPG با عملکرد بالا مناسب می‌سازد

  • پردازش مبتنی بر جریان - SDK از طریق جریان‌ها می‌خواند و می‌نویسد و حتی برای فایل‌های بزرگ PSD مصرف حافظه را کم نگه می‌دارد.
  • اجرای ناهمزمان - تبدیل در یک رشته جداگانه مانع از مسدود شدن رابط کاربری می‌شود و امکان اجرای دسته‌های موازی را فراهم می‌کند.
  • گزینه‌های دقیق JPEG - کیفیت، فشرده‌سازی و فضای رنگی را از طریق JpgConvertOptions کنترل کنید.
  • پشتیبانی از PSD تک‌صفحه‌ای - فایل‌های PSD به عنوان یک صفحه واحد در نظر گرفته می‌شوند که جریان تبدیل را ساده می‌کند.
  • مدیریت خطای قوی - استثناهای دقیق به شناسایی مشکلاتی مانند لایه‌های گمشده یا ویژگی‌های پشتیبانی‌نشده کمک می‌کنند.

برای جزئیات بیشتر، به مستندات رسمی مراجعه کنید.

نکات عملی برای تبدیل کارآمد PSD به JPG در جاوا

  • استفاده از try‑with‑resources برای اطمینان از بسته شدن خودکار جریان‌ها.
  • استفاده مجدد از نمونه Converter هنگام تبدیل چندین فایل برای کاهش هزینه ایجاد اشیاء.
  • تنظیم کیفیت JPEG به‌طور مناسب؛ مقدار 80‑90 تعادل خوبی بین اندازه و وضوح بصری فراهم می‌کند.
  • پردازش فایل‌های بزرگ به صورت بخش‑بخش با تکیه بر معماری استریمینگ SDK به‌جای بارگذاری کل PSD در حافظه.
  • اندازه‌گیری زمان تبدیل با System.nanoTime() همان‌طور که در نمونه نشان داده شده برای شناسایی گلوگاه‌های عملکردی.

نتیجه‌گیری

تبدیل PSD به JPG در جاوا به‌سادگی با Conholdate.Total for Java انجام می‌شود. API استریمینگ SDK، قابلیت‌های ناهمزمان و گزینه‌های قابل تنظیم JPEG به شما امکان می‌دهند تا خطوط لوله تصویری سریع و با کارایی حافظه بالا بسازید. به‌خاطر داشته باشید که برای تولید یک لایسنس مناسب دریافت کنید؛ می‌توانید جزئیات قیمت‌گذاری را در صفحه قیمت‌گذاری بررسی کنید و برای تست یک لایسنس موقت از صفحه لایسنس موقت دریافت کنید. با کد و راهنمایی‌های بهترین روش در این مقاله، آماده‌اید تا تبدیل PSD به JPG را در برنامه‌های جاوای خود ادغام کنید.

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

  • چگونه می‌توانم تبدیل PSD به JPG را در جاوا با استفاده از Conholdate.Total انجام دهم؟
    راهنمای گام‌به‌گام بالا را دنبال کنید، وابستگی Maven را اضافه کنید و از نمونه کد ارائه‌شده استفاده کنید. SDK بار سنگین تجزیه لایه‌های PSD و تولید یک JPG با کیفیت بالا را بر عهده می‌گیرد.

  • در هنگام تبدیل PSD به JPG چه ملاحظات حافظه‌ای باید در نظر بگیرم؟
    SDK با جریان‌ها (streams) کار می‌کند، بنابراین فقط بافرهای کوچک در حافظه نگه داشته می‌شوند. این طراحی از بروز خطاهای OutOfMemory حتی در فایل‌های PSD چند مگابایتی جلوگیری می‌کند.

  • آیا می‌توانم کیفیت JPEG را در حین تبدیل تنظیم کنم؟
    بله. کیفیت مورد نظر (0‑100) را در شی JpgConvertOptions قبل از فراخوانی converter.convert() تنظیم کنید.

  • آیا تبدیل ناهمزمان ضروری است؟
    اگرچه الزامی نیست، اجرای تبدیل در یک رشته جداگانه UI شما را پاسخگو نگه می‌دارد و امکان پردازش چندین فایل به‌صورت همزمان را فراهم می‌کند، که برای جریان‌های کاری دسته‌ای مفید است.

بیشتر بخوانید