시스템 스토리지는 이 현대 기술 시대에 중요한 주제입니다. 데이터의 양은 매일 증가하고 데이터 파일의 시각적 표현은 많은 인기를 얻었습니다. 그러나 이미지 파일 형식을 압축하는 방법은 여러 가지가 있지만 이미지 품질이 손상되어서는 안 됩니다. 따라서 이 .NET 이미지 압축 API를 사용하여 PNG 이미지를 압축합니다. 이 블로그 게시물에서는 프로그래밍 방식으로 C#을 사용하여 PNG 파일 크기를 줄이는 방법을 배웁니다.
이 기사에서는 다음 사항을 다룰 것입니다.
이미지 압축 API 설치
이 라이브러리는 JPEG, TIFF 등과 같은 다양한 이미지 파일 형식을 조작하고 처리하기 위한 광범위한 메서드와 속성을 제공합니다. 이 API를 .NET 프로젝트에 설치하는 방법에는 두 가지가 있습니다.
따라서 DLL 파일을 다운로드하거나 NuGet 패키지 관리자에서 다음 명령을 실행할 수 있습니다.
Install-Package Aspose.Imaging
C#을 사용하여 PNG 파일 크기를 줄이는 방법
여기에서 이미지 파일 형식을 압축하는 방법과 속성의 거대한 스택을 볼 수 있습니다. 따라서 프로그래밍 방식으로 PNG 파일을 압축하는 단계와 코드 스니펫을 작성합니다.
다음 단계를 따르십시오.
- Load 메서드를 호출하여 소스 PNG 이미지를 로드합니다.
- Save 메서드를 호출하여 압축된 이미지를 PNG 형식으로 저장합니다.
- 이 PngOptions가 프로그레시브인지 여부를 나타내는 Progressive 속성 값을 설정합니다.
- IndexedColor는 각 픽셀이 팔레트 인덱스인 색상 유형을 나타냅니다.
- CompressionLevel 값을 할당하여 최대 압축을 설정합니다.
- GetCloseImagePalette 메서드는 이미지에 색상 팔레트가 없는 경우 래스터 이미지에서 색상 팔레트를 가져옵니다(이미지 팔레트화). 팔레트가 있는 경우 계산을 수행하는 대신 팔레트가 사용됩니다.
// Load 메서드를 호출하여 소스 PNG 이미지 로드
using (Image image = Image.Load("image.png"))
{
// Save 메서드를 호출하여 압축된 이미지를 PNG 형식으로 저장합니다.
image.Save(out.png, new ImageOptions.PngOptions()
{
// 이 PngOptions가 프로그레시브인지 여부를 나타내는 Progressive 속성 값을 설정합니다.
Progressive = true,
// IndexedColor는 각 픽셀이 팔레트 인덱스인 색상 유형을 나타냅니다.
ColorType = FileFormats.Png.PngColorType.IndexedColor,
// 최대 압축을 설정하려면 CompressionLevel 값을 할당하십시오.
CompressionLevel = 9,
// GetCloseImagePalette 메서드는 이미지에 색상 팔레트가 없는 경우 래스터 이미지에서 색상 팔레트를 가져옵니다(이미지 팔레트화). 팔레트가 있는 경우 계산을 수행하는 대신 사용됩니다.
Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
});
}
이미지 압축 API - 고급 옵션
이전 섹션에서 C#을 사용하여 PNG 파일 크기를 줄이는 방법을 배웠습니다. 이제 이 이미지 압축 API의 다른 눈에 띄는 방법과 속성을 살펴보겠습니다. 이 섹션에서는 프로그래밍 방식으로 PNG 파일을 만들기 위해 사용자 지정 API를 호출합니다.
아래에 언급된 단계와 코드 스니펫을 따를 수 있습니다.
- 100x100픽셀의 PNG 이미지를 생성하는 PngImage 클래스의 인스턴스를 초기화합니다.
- LinearGradientBrush 메서드는 브러시를 선형 그래디언트로 캡슐화합니다.
- 지정된 좌표를 사용하여 Point 구조체의 새 인스턴스를 초기화합니다.
- 현재 어셈블리에서 사용되는 그래픽 엔진에 따라 그래픽을 나타내는 Graphics 클래스의 인스턴스를 인스턴스화합니다.
- FillRectangle 메서드를 사용하여 파란색 투명 그라데이션으로 이미지를 채웁니다.
- PngOptions 클래스의 개체를 만듭니다.
- 이 PngOptions가 프로그레시브인지 여부를 나타내는 Progressive 속성 값을 설정합니다.
- ResolutionSetting 클래스를 초기화하여 수평 및 수직 해상도를 인치당 96픽셀로 설정할 수 있습니다.
- ColorType 속성에 값을 할당하여 색상의 종류를 설정합니다.
- CompressionLevel 속성에 값을 할당하여 최대 압축 수준을 설정합니다.
- FilterType 속성은 PNG 파일 저장 프로세스 중에 사용되는 필터 유형을 설정합니다.
- BitDepth 속성에 값을 할당하여 채널당 비트 수를 설정합니다.
- Save 메서드를 호출하여 파일에 저장합니다.
// 100x100픽셀의 PNG 이미지를 생성하는 PngImage 클래스의 인스턴스를 초기화합니다.
using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
{
// LinearGradientBrush 메서드는 브러시를 선형 그래디언트로 캡슐화합니다.
Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
// 지정된 좌표를 사용하여 Point 구조체의 새 인스턴스를 초기화합니다.
new Aspose.Imaging.Point(0, 0),
new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
Aspose.Imaging.Color.Blue,
Aspose.Imaging.Color.Transparent);
// 현재 어셈블리에 사용된 그래픽 엔진에 따라 그래픽을 나타내는 Graphics 클래스의 인스턴스를 인스턴스화합니다.
Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);
// FillRectangle 메서드를 사용하여 파란색 투명 그라디언트로 이미지를 채웁니다.
graphics.FillRectangle(gradientBrush, pngImage.Bounds);
// PngOptions 클래스의 개체 만들기
Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();
// 이 PngOptions가 프로그레시브인지 여부를 나타내는 Progressive 속성 값을 설정합니다.
saveOptions.Progressive = true;
// ResolutionSetting 클래스를 초기화하여 수평 및 수직 해상도를 인치당 96픽셀로 설정합니다.
saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);
// ColorType 속성에 값을 할당하여 색상 유형을 설정합니다.
saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
// CompressionLevel 속성에 값을 할당하여 최대 압축 수준을 설정합니다.
saveOptions.CompressionLevel = 9;
// FilterType 속성은 png 파일 저장 프로세스 중에 사용되는 필터 유형을 설정합니다.
saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;
// BitDepth 속성에 값을 할당하여 채널당 비트 수를 설정합니다.
saveOptions.BitDepth = 8;
// Save 메서드를 호출하여 파일에 저장합니다.
pngImage.Save( "output.png", saveOptions);
}
아래 이미지에서 출력을 볼 수 있습니다.
무료 라이선스 받기
평가 제한 없이 API를 사용해 볼 수 있는 무료 임시 라이선스를 얻을 수 있습니다.
합산
여기에서 이 블로그 게시물을 마칠 수 있습니다. 프로그래밍 방식으로 C#을 사용하여 PNG 파일 크기를 줄이는 방법을 배웠기를 바랍니다. 또한 최적화된 PNG 파일을 만든 이 이미지 압축 API의 다른 고급 방법을 살펴보았습니다. 그러나 이 링크에서 PNG 파일 형식과 관련된 추가 방법 및 속성을 확인할 수 있습니다. 무엇보다 생태계를 알기 위해 이 .NET 라이브러리의 문서를 건너뛰지 마세요. 향후 블로그 게시물에서 다른 유용한 주제에 대해 쓸 것입니다. 따라서 업데이트를 위해 conholdate.com에 연락하십시오.
질문하기
포럼에서 질문이나 질문에 대해 알려주실 수 있습니다.
자주 묻는 질문
C#에서 PNG 이미지를 압축하는 방법은 무엇입니까?
이 .NET 이미지 압축 API를 설치하여 PNG 파일 형식을 압축하고 조작하십시오. JPEG, TIFF 등과 같이 널리 사용되는 다른 이미지 파일 형식을 압축하는 방법과 속성을 제공합니다.
PNG 형식의 이미지 파일 크기를 최소화하는 방법은 무엇입니까?
이 방법을 사용하면 프로그래밍 방식으로 C#을 사용하여 PNG 파일 크기를 줄일 수 있습니다. 또한 요구 사항에 따라 API 호출을 구성할 수 있습니다.
C# 코드 예제에서 PNG 이미지의 크기를 조정하는 방법은 무엇입니까?
이 링크를 따라 프로그래밍 방식으로 PNG 이미지의 크기를 조정하는 코드 조각에 대해 알아보세요. 이 .NET API는 강력하며 광범위한 메서드 및 속성을 제공합니다.