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ż
- Konwertuj obrazy na skalę szarości w C#
- Dodaj znak wodny do obrazów za pomocą C#
- Kompresuj obrazy PNG, JPEG i TIFF za pomocą języka C#
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.