Scal obrazy w C#

W tym artykule dowiesz się, jak programowo scalać lub łączyć wiele obrazów w jeden obraz przy użyciu języka C#. Przewodnik krok po kroku i przykłady kodu pokażą, jak scalać obrazy w poziomie lub w pionie.

Interfejs API języka C# do łączenia obrazów — bezpłatne pobieranie

Aby połączyć wiele obrazów w jeden, użyjemy Aspose.Imaging for .NET. Jest to potężny i bogaty w funkcje interfejs API do przetwarzania obrazu, który umożliwia manipulowanie szeroką gamą formatów obrazów. Możesz pobrać interfejs API lub zainstalować go za pomocą NuGet.

PM> Install-Package Aspose.Imaging

Informacja: Inne interfejsy API firmy Aspose, zwłaszcza Aspose.Slides for .NET, mogą również umożliwiać scalanie obrazów ([JPG](https://products .aspose.com/slides/net/merger/jpg-to-jpg/) lub PNG), pliki PDF , [dokumenty HTML](https://products.aspose.com/slides/net/merger/html-to -html/) oraz pliki w innych formatach.

Połącz wiele obrazów w C#

Istnieją dwa sposoby łączenia obrazów w jeden: w pionie iw poziomie. W pierwszej metodzie obrazy są nakładane na siebie w pionie, podczas gdy w drugiej obrazy są łączone jeden po drugim w poziomie. W poniższych sekcjach poznasz obie metody z przykładami kodu.

C# Scal obrazy w pionie

Poniżej przedstawiono kroki scalania obrazów w pionie przy użyciu języka C#.

  • Najpierw określ ścieżki obrazów w tablicy ciągów.
  • Następnie utwórz listę Rozmiar i zapisz w niej rozmiar każdego obrazu.
  • Oblicz wysokość i szerokość otrzymanego obrazu.
  • Utwórz obiekt klasy StreamSource i zainicjuj go nowym MemoryStream.
  • Utwórz obiekt klasy JpegOptions i ustaw jego opcje.
  • Utwórz instancję klasy JpegImage dla nowego obrazu i zainicjuj ją za pomocą JpegOptions oraz obliczonej wysokości i szerokości.
  • Przejrzyj listę obrazów i w każdej iteracji załaduj obraz do obiektu RasterImage.
  • Utwórz Rectangle dla każdego obrazu i dodaj go do nowego obrazu za pomocą metody JpegImage.SaveArgb32Pixels().
  • Zwiększaj wysokość ściegu w każdej iteracji.
  • Na koniec zapisz nowy obraz za pomocą metody JpegImage.Save(string).

Poniższy przykładowy kod pokazuje, jak scalać obrazy w pionie w języku C#.

// Utwórz listę obrazów
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// Uzyskaj rozmiar wynikowego obrazu
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);

// Połącz obrazy w nowy
using (MemoryStream memoryStream = new MemoryStream())
{
    // Utwórz źródło wyjściowe
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // Utwórz opcje jpeg
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    
    // Utwórz obraz wyjściowy
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedHeight = 0;
        // Połącz obrazy
        foreach (string imagePath in imagePaths)
        {
            using (RasterImage image = (RasterImage)Image.Load(imagePath))
            {
                Rectangle bounds = new Rectangle(0, stitchedHeight, image.Width, image.Height);
                newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
                stitchedHeight += image.Height;
            }
        }
        
        // Zapisz scalony obraz
        newImage.Save("merged-image.jpg");
    }
}

Scal obrazy poziomo w C#

Poniżej przedstawiono kroki łączenia obrazów w poziomie przy użyciu języka C#.

  • Najpierw określ ścieżki obrazów w tablicy ciągów.
  • Następnie utwórz listę Rozmiar i zapisz w niej rozmiar każdego obrazu.
  • Oblicz wysokość i szerokość otrzymanego obrazu.
  • Utwórz nowe źródło za pomocą FileCreateSource(String, Boolean) i zainicjuj je ścieżką pliku.
  • Utwórz obiekt klasy JpegOptions i ustaw jego opcje.
  • Utwórz instancję klasy JpegImage dla nowego obrazu i zainicjuj ją za pomocą JpegOptions oraz obliczonej wysokości i szerokości.
  • Przejrzyj listę obrazów i w każdej iteracji załaduj obraz do obiektu RasterImage.
  • Utwórz Rectangle dla każdego obrazu i dodaj go do nowego obrazu za pomocą metody JpegImage.SaveArgb32Pixels().
  • Zwiększ szerokość ściegu w każdej iteracji.
  • Po zakończeniu zapisz nowy obraz za pomocą metody JpegImage.Save(string).

Poniższy przykładowy kod pokazuje, jak scalić wiele obrazów w poziomie.

// Utwórz listę obrazów
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// Aby utworzyć tymczasowy obraz
string tempFilePath = "temp.jpg";

// Uzyskaj rozmiar wynikowego obrazu
List <Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Połącz obrazy w nowy
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// Utwórz opcje jpeg
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    
    // Połącz obrazy
    foreach (string imagePath in imagePaths)
    {
        using (RasterImage image = (RasterImage)Image.Load(imagePath))
        {
            Rectangle bounds = new Rectangle(stitchedWidth, 0, image.Width, image.Height);
            newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
            stitchedWidth += image.Width;
        }
    }
    
    // Zapisz scalony obraz
    newImage.Save(outputPath);
}

Interfejs API scalania obrazów w języku C# — uzyskaj bezpłatną licencję

Możesz uzyskać bezpłatną tymczasową licencję i scalać obrazy bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyłeś się łączyć wiele obrazów w jeden obraz przy użyciu języka C#. Próbki kodu pokazały, jak łączyć obrazy w pionie i poziomie. Ponadto możesz dowiedzieć się więcej o interfejsie API przetwarzania obrazów platformy .NET, korzystając z dokumentacji. Możesz także podzielić się z nami swoimi pytaniami za pośrednictwem naszego forum.

Zobacz też

Informacje: Aspose zapewnia BEZPŁATNĄ aplikację internetową Collage. Korzystając z tej usługi online, możesz łączyć obrazy JPG do JPG lub PNG do PNG, tworzyć siatki zdjęć i tak dalej.