Export PSD to GIF là một handoff phổ biến cho đồ họa web, tài sản email, và hoạt hình nhẹ. Với Aspose.PSD cho .NET, bạn có thể chuyển đổi một PSD thành một GIF tĩnh trong một cuộc gọi, Và khi PSD chứa một dòng thời gian hoạt động, thì bạn sẽ xuất khẩu một gIF hoạt tính* trực tiếp từ dòng giờ đó.
Bài viết này cho thấy cả hai kịch bản với mã đầy đủ, inline.
Nguyên tắc
- .NET 6 hoặc mới hơn (hoặc .Net Framework 4.6.2+)
- gói NuGet:
Aspose.PSD
dotnet add package Aspose.PSD
Chuyển đổi PSD sang static GIF
Sử dụng Image.Load
để mở PSD, thả vào PsdImage
Và tiết kiệm với GifOptions
Điều này làm cho PSD trở thành một GIF đơn khung.
// File: Program.cs
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.ImageOptions;
class Program
{
static void Main()
{
var inputPsd = "input.psd";
var outputGif = "output-static.gif";
if (!File.Exists(inputPsd))
{
Console.WriteLine("Input PSD not found.");
return;
}
using (var psd = (PsdImage)Image.Load(inputPsd))
{
// Export as a single-frame GIF
var gifOptions = new GifOptions();
psd.Save(outputGif, gifOptions);
}
Console.WriteLine("Saved: " + Path.GetFullPath(outputGif));
}
}
Lưu ý
- Xuất khẩu tĩnh không đòi hỏi một dòng thời gian trong PSD.
- Nếu bạn cần một kích thước hoặc ngoại hình tệp khác nhau, tối ưu hóa tác phẩm nghệ thuật nguồn (màu, đơn giản hóa màu sắc) trước khi xuất khẩu.
Chuyển đổi PSD dựa trên dòng thời gian sang GIF hoạt hình
Nếu PSD của bạn chứa một dòng thời gian hoạt hình, bạn có thể xuất nó như là một GIF animated bằng cách sử dụng API timeline.
// File: Program.cs
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.ImageOptions;
class Program
{
static void Main()
{
var inputPsd = "animated.psd";
var outputAgif = "output-animated.gif";
if (!File.Exists(inputPsd))
{
Console.WriteLine("Input PSD not found.");
return;
}
using (var psd = (PsdImage)Image.Load(inputPsd))
{
if (psd.Timeline != null)
{
// Export PSD timeline as animated GIF
var gifOptions = new GifOptions();
psd.Timeline.Save(outputAgif, gifOptions);
Console.WriteLine("Saved animated GIF: " + Path.GetFullPath(outputAgif));
}
else
{
// Fallback to static export if the PSD has no timeline
var gifOptions = new GifOptions();
psd.Save(outputAgif, gifOptions);
Console.WriteLine("PSD has no timeline. Saved static GIF: " + Path.GetFullPath(outputAgif));
}
}
}
}
Lưu ý
- Con đường này tuân thủ lệnh khung và sự chậm trễ theo ranh giới được xác định trong dòng thời gian PSD.
- Nếu PSD của bạn không có dữ liệu dòng thời gian, mã sẽ rơi trở lại một GIF một khung.
Tùy chọn Batch Conversion
Các tiện ích sau đây chuyển đổi mỗi PSD trong một thư mục sang GIF. PSD được hoạt hình xuất qua dòng thời gian khi có sẵn, những người khác xuất như Gif tĩnh.
// File: BatchPsdToGif.cs
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.ImageOptions;
public static class BatchPsdToGif
{
public static void Run(string inputDir, string outputDir)
{
Directory.CreateDirectory(outputDir);
var psdFiles = Directory.GetFiles(inputDir, "*.psd", SearchOption.AllDirectories);
foreach (var psdPath in psdFiles)
{
var rel = Path.GetRelativePath(inputDir, psdPath);
var outFn = Path.ChangeExtension(rel, ".gif");
var outFp = Path.Combine(outputDir, outFn);
Directory.CreateDirectory(Path.GetDirectoryName(outFp) ?? outputDir);
try
{
using var psd = (PsdImage)Image.Load(psdPath);
var gifOptions = new GifOptions();
if (psd.Timeline != null)
{
psd.Timeline.Save(outFp, gifOptions);
}
else
{
psd.Save(outFp, gifOptions);
}
Console.WriteLine($"OK {rel} -> {outFn}");
}
catch (Exception ex)
{
Console.WriteLine($"ERR {rel}: {ex.Message}");
}
}
}
}
gọi nó từ Main
:
// inside Main
// BatchPsdToGif.Run(@"C:\in-psd", @"C:\out-gif");
Thực hành tốt nhất
- Các giới hạn màu: GIF sử dụng một bảng xếp hạng chỉ định với tối đa 256 màu mỗi khung. Đối với các tác phẩm nghệ thuật phức tạp, hãy xem xét việc đơn giản hóa lớp hoặc màu sắc trong PSD cho các tệp tốt hơn và nhỏ hơn.
- Thông minh: GIF hỗ trợ độ minh bạch 1 bit. Nếu bạn cần Alpha đầy đủ, hãy sử dụng PNG cho hình ảnh tĩnh và APNG để hoạt hình trong môi trường tương thích.
- Kích thước tệp: GIF hoạt hình có thể lớn.Hãy giảm số lượng khung, kích cỡ khuôn hoặc chi tiết tác phẩm để giữ kích thước thực tế.
- Kiểm tra: Luôn xem trước kết quả trong môi trường mục tiêu để xác nhận thời gian, vòng tròn và hành vi palette.
Với các mô hình này, bạn có thể tự động cả static và animated PSD đến GIF xuất khẩu trong dòng công việc .NET của bạn.