WeddingPlatform.Web 1.0.0.0
지도, 갤러리, 방명록, 계좌 안내와 배경음악을 링크 하나에 담는 무료 모바일 청첩장 서비스입니다.
로딩중...
검색중...
일치하는것 없음
WeddingPlatform.Services.SystemDrawingImageOptimizationService 클래스 참조sealed

더 자세히 ...

WeddingPlatform.Services.SystemDrawingImageOptimizationService에 대한 상속 다이어그램 :
WeddingPlatform.Services.SystemDrawingImageOptimizationService에 대한 협력 다이어그램:

Public 멤버 함수

bool CanEncode (string outputFormat)
Task< ImageOptimizationResultOptimizeAsync (string sourcePath, string destinationPath, EffectiveMediaPolicy policy, CancellationToken ct=default)

정적 Private 멤버 함수

static Bitmap CreateResizedBitmap (Image source, int maxLongSide)
static void SaveJpeg (Image image, string path, int quality)
static string NormalizeFormat (string? outputFormat)

상세한 설명

System.Drawing 기반 이미지 최적화 서비스입니다. WebP는 기본 Windows/.NET 인코더에 없으므로 호출부에서 지원 가능한 형식으로 fallback합니다.

SystemDrawingImageOptimizationService.cs 파일의 17 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ CanEncode()

bool WeddingPlatform.Services.SystemDrawingImageOptimizationService.CanEncode ( string outputFormat)
inline

Can Encode 조건을 확인합니다.

매개변수
outputFormatoutput Format에 사용할 string 값입니다.
반환값
Can Encode 조건이 충족되면 true이고, 그렇지 않으면 false입니다.

WeddingPlatform.Services.IImageOptimizationService를 구현.

SystemDrawingImageOptimizationService.cs 파일의 43 번째 라인에서 정의되었습니다.

44 {
45 var format = NormalizeFormat(outputFormat);
46 return format is "jpg" or "jpeg" or "png";
47 }

다음을 참조함 : NormalizeFormat().

다음에 의해서 참조됨 : OptimizeAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CreateResizedBitmap()

Bitmap WeddingPlatform.Services.SystemDrawingImageOptimizationService.CreateResizedBitmap ( Image source,
int maxLongSide )
inlinestaticprivate

Resized Bitmap 값을 생성합니다.

매개변수
sourcesource에 사용할 Image 값입니다.
maxLongSidemax Long Side에 사용할 int 값입니다.
반환값
Create Resized Bitmap 작업에서 생성한 Bitmap 결과입니다.

SystemDrawingImageOptimizationService.cs 파일의 169 번째 라인에서 정의되었습니다.

170 {
171 var boundedLongSide = maxLongSide <= 0 ? 1920 : maxLongSide;
172 var scale = Math.Min(1d, boundedLongSide / (double)Math.Max(source.Width, source.Height));
173 var width = Math.Max(1, (int)Math.Round(source.Width * scale));
174 var height = Math.Max(1, (int)Math.Round(source.Height * scale));
175
176 var bitmap = new Bitmap(width, height);
177 bitmap.SetResolution(source.HorizontalResolution, source.VerticalResolution);
178 using var graphics = Graphics.FromImage(bitmap);
179 graphics.CompositingQuality = CompositingQuality.HighQuality;
180 graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
181 graphics.SmoothingMode = SmoothingMode.HighQuality;
182 graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
183 graphics.Clear(Color.White);
184 graphics.DrawImage(source, 0, 0, width, height);
185 return bitmap;
186 }

다음에 의해서 참조됨 : OptimizeAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NormalizeFormat()

string WeddingPlatform.Services.SystemDrawingImageOptimizationService.NormalizeFormat ( string? outputFormat)
inlinestaticprivate

Normalize Format 작업을 수행합니다.

매개변수
outputFormatoutput Format에 사용할 string? 값입니다.
반환값
Normalize Format 작업에서 생성한 string 결과입니다.

SystemDrawingImageOptimizationService.cs 파일의 259 번째 라인에서 정의되었습니다.

260 {
261 var normalized = outputFormat?.Trim().TrimStart('.').ToLowerInvariant();
262 return string.IsNullOrWhiteSpace(normalized) ? "" : normalized;
263 }

다음에 의해서 참조됨 : CanEncode(), OptimizeAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OptimizeAsync()

Task< ImageOptimizationResult > WeddingPlatform.Services.SystemDrawingImageOptimizationService.OptimizeAsync ( string sourcePath,
string destinationPath,
EffectiveMediaPolicy policy,
CancellationToken ct = default )
inline

Optimize Async 작업을 수행합니다.

매개변수
sourcePathsource Path에 사용할 string 값입니다.
destinationPathdestination Path에 사용할 string 값입니다.
policypolicy에 사용할 EffectiveMediaPolicy 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Optimize Async 작업에서 생성한 Task<ImageOptimizationResult> 결과입니다.

WeddingPlatform.Services.IImageOptimizationService를 구현.

SystemDrawingImageOptimizationService.cs 파일의 97 번째 라인에서 정의되었습니다.

98 {
99 ct.ThrowIfCancellationRequested();
100
101 var format = NormalizeFormat(Path.GetExtension(destinationPath));
102 if (string.IsNullOrWhiteSpace(format))
103 {
104 format = NormalizeFormat(policy.ImageOutputFormat);
105 }
106
107 if (!CanEncode(format))
108 {
109 return Task.FromResult(new ImageOptimizationResult
110 {
111 Skipped = true,
112 Message = $"{format} 인코더를 사용할 수 없어 원본 표시 파일을 유지했습니다."
113 });
114 }
115
116 using var source = Image.FromFile(sourcePath);
117 using var output = CreateResizedBitmap(source, policy.ImageMaxLongSidePx);
118
119 Directory.CreateDirectory(Path.GetDirectoryName(destinationPath)!);
120 if (format is "jpg" or "jpeg")
121 {
122 SaveJpeg(output, destinationPath, policy.ImageQuality);
123 }
124 else
125 {
126 output.Save(destinationPath, ImageFormat.Png);
127 }
128
129 return Task.FromResult(new ImageOptimizationResult
130 {
131 Succeeded = File.Exists(destinationPath) && new FileInfo(destinationPath).Length > 0,
132 FileName = Path.GetFileName(destinationPath),
133 Message = "이미지 최적화 완료"
134 });
135 }

다음을 참조함 : CanEncode(), CreateResizedBitmap(), WeddingPlatform.Models.EffectiveMediaPolicy.ImageMaxLongSidePx, WeddingPlatform.Models.EffectiveMediaPolicy.ImageOutputFormat, WeddingPlatform.Models.EffectiveMediaPolicy.ImageQuality, NormalizeFormat(), SaveJpeg(), WeddingPlatform.Models.Skipped.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SaveJpeg()

void WeddingPlatform.Services.SystemDrawingImageOptimizationService.SaveJpeg ( Image image,
string path,
int quality )
inlinestaticprivate

Jpeg 데이터를 저장합니다.

매개변수
imageimage에 사용할 Image 값입니다.
pathpath에 사용할 string 값입니다.
qualityquality에 사용할 int 값입니다.

SystemDrawingImageOptimizationService.cs 파일의 220 번째 라인에서 정의되었습니다.

221 {
222 var codec = ImageCodecInfo.GetImageEncoders()
223 .FirstOrDefault(x => x.FormatID == ImageFormat.Jpeg.Guid);
224 if (codec is null)
225 {
226 image.Save(path, ImageFormat.Jpeg);
227 return;
228 }
229
230 using var parameters = new EncoderParameters(1);
231 parameters.Param[0] = new EncoderParameter(Encoder.Quality, Math.Clamp(quality, 1, 100));
232 image.Save(path, codec, parameters);
233 }

다음에 의해서 참조됨 : OptimizeAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: