Refactor ComposeSignaturePreviewPng to return Stream
Updated the `ComposeSignaturePreviewPng` method in the `IPdfPageImageRenderer` interface to return a `Stream` instead of a `byte[]` for improved memory efficiency when handling large image data. - Added `ComposeSignaturePreviewPngBytes` extension method to convert the `Stream` to a `byte[]` for backward compatibility. - Updated `PdfPageImageRenderer` to return a `Stream` and adjusted its internal logic to reset the `MemoryStream` position before returning. - Modified `DevSignatureInkController` to use the `Stream`-based implementation for HTTP responses. - Made minor formatting adjustments in `PdfPageImageRenderer`. These changes optimize memory usage while maintaining compatibility with existing workflows that require `byte[]`.
This commit is contained in:
@@ -57,7 +57,7 @@ public class PdfPageImageRenderer : IPdfPageImageRenderer
|
||||
return Task.FromResult<IReadOnlyList<PdfPageImageDto>>(results);
|
||||
}
|
||||
|
||||
public byte[] ComposeSignaturePreviewPng(ISignatureInkPayload element)
|
||||
public Stream ComposeSignaturePreviewPng(ISignatureInkPayload element)
|
||||
{
|
||||
const double sigW = 1.77 * 72;
|
||||
const double sigH = 1.96 * 72;
|
||||
@@ -137,9 +137,10 @@ public class PdfPageImageRenderer : IPdfPageImageRenderer
|
||||
|
||||
var renderOptions = PdfPageRenderingParameters.CreateWithResolution(400f);
|
||||
using DXBitmap bitmap = rasterProcessor.CreateDXBitmap(1, renderOptions);
|
||||
using var pngStream = new MemoryStream();
|
||||
var pngStream = new MemoryStream();
|
||||
bitmap.Save(pngStream, DXImageFormat.Png);
|
||||
return pngStream.ToArray();
|
||||
pngStream.Position = 0;
|
||||
return pngStream;
|
||||
}
|
||||
|
||||
private static System.Drawing.RectangleF FitImageContain(System.Drawing.RectangleF area, byte[] imageBytes)
|
||||
@@ -176,4 +177,4 @@ public class PdfPageImageRenderer : IPdfPageImageRenderer
|
||||
return isJpeg;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user