如何在 .NET 中存储的图像中创建照片专辑

如何在 .NET 中存储的图像中创建照片专辑

Aspose.Imaging for .NET 使您可以轻松地从 AWS S3、Azure Blob Storage 或类似平台中提取图像,并创建多页专辑 - 无需手动下载。

现实世界问题

许多组织在云中存储图像,但需要自动创建专辑以共享、报告或遵守,而无需单次下载文件。

解决方案概述

使用相关的云 SDK 列出并下载在飞机上的图像,然后处理并将它们集成到一个专辑,就像你会与当地文件一样。

原則

  • Visual Studio 2019 或以后
  • .NET 6.0 或更高版本(或 .Net Framework 4.6.2+)
  • Aspose.Imaging for .NET 来自 NuGet
  • AWS SDK、Azure Blob 或类似
  • 访问您的云存储帐户和容器
PM> Install-Package Aspose.Imaging
PM> Install-Package AWSSDK.S3  # Or Azure.Storage.Blobs, etc.

步骤实施

步骤1:在云存储中列出图像

标签: AWS S3

using Amazon.S3;
using Amazon.S3.Model;

var s3Client = new AmazonS3Client("ACCESS_KEY", "SECRET_KEY", Amazon.RegionEndpoint.USEast1);
var request = new ListObjectsV2Request
{
    BucketName = "my-photo-bucket",
    Prefix = "event-2025/"
};
var response = await s3Client.ListObjectsV2Async(request);
var imageKeys = response.S3Objects.Select(o => o.Key).Where(k => k.EndsWith(".jpg") || k.EndsWith(".png")).ToList();

步骤2:下载或播放图像为专辑

using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.FileFormats.Tiff.Enums;

var images = new List<Image>();
foreach (var key in imageKeys)
{
    using (var s3Obj = await s3Client.GetObjectStreamAsync("my-photo-bucket", key, null))
    {
        var ms = new MemoryStream();
        await s3Obj.CopyToAsync(ms);
        ms.Position = 0;
        images.Add(Image.Load(ms));
    }
}

步骤3:创建和保存多页专辑

var tiffOptions = new TiffOptions(TiffExpectedFormat.Default)
{
    Compression = TiffCompressions.Lzw
};
string tiffPath = "./output/cloud_album.tiff";

using (var album = Image.Create(tiffOptions, images[0].Width, images[0].Height, false))
{
    var graphics = new Aspose.Imaging.Graphics(album);
    graphics.DrawImage(images[0], 0, 0, images[0].Width, images[0].Height);
    for (int i = 1; i < images.Count; i++)
    {
        album.AddPage(images[i]);
    }
    album.Save(tiffPath);
}
images.ForEach(img => img.Dispose());

步骤4:(可选)上传专辑返回云

using (var fileStream = File.OpenRead(tiffPath))
{
    await s3Client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest
    {
        BucketName = "my-photo-bucket",
        Key = "albums/event-2025-album.tiff",
        InputStream = fileStream
    });
}

使用案例和应用程序

  • 自动公司或项目报告从云图像
  • 共享专辑为分发团队
  • Cloud-to-Cloud 存档或遵守

共同挑战与解决方案

** 长文件或缓慢下载:** 使用流动,避免同时加载所有存储中的文件。

云认证或网络错误: 使用坚实的故障处理和安全的信誉管理。

** 不同的图像尺寸或格式:** 在添加到专辑之前重新编制或标准化图片。

最佳实践

  • 确保您的云密钥,并定期旋转
  • 监控上传/下载量和错误
  • 运行在日程或活动启动器上创建专辑

FAQ

问:我可以使用 Azure Blob 或 Google Cloud Storage 吗?答:是的,使用他们的SDK以相同的方式列出和下载图像。

**Q:我可以在多个文件夹中创建DICOM专辑或集合吗?**答:是的,按需要调整逻辑。

结论

创建专辑直接从云存储中使用 Aspose.Imaging for .NET 提高效率,并允许规模自动化。 Aspose.Imaging 为 .NET API 参考 .

 中文