Skip to content

Instantly share code, notes, and snippets.

@skmasq
Created June 15, 2019 18:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skmasq/4479375b273a1668e7636e27ec4e1df5 to your computer and use it in GitHub Desktop.
Save skmasq/4479375b273a1668e7636e27ec4e1df5 to your computer and use it in GitHub Desktop.
where is memory leak?
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using ImageProcessor;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
namespace Api.Infrastructure.Helpers
{
public static class Converting
{
public static void ImageToPdf(Stream stream, string path)
{
using (var image = Image.FromStream(stream))
{
var frameDimensions = new FrameDimension(image.FrameDimensionsList[0]);
var frameCount = image.GetFrameCount(frameDimensions);
using (var pdf = new PdfDocument())
{
for (var i = 0; i < frameCount; i++)
{
image.SelectActiveFrame(frameDimensions, i);
using (var inStream = new MemoryStream())
{
image.Save(inStream, ImageFormat.Jpeg);
using (var outStream = new MemoryStream())
{
using (var imageFactory = new ImageFactory())
{
var factoryImage = imageFactory.Load(inStream);
factoryImage.Resize(factoryImage.Image.Size.Width > factoryImage.Image.Size.Height
? new Size(792, 0)
: new Size(0, 1122));
factoryImage.Format(ImageFormat.Jpeg);
factoryImage.Quality(30);
factoryImage.Save(outStream);
var page = new PdfPage
{
Size = PageSize.A4,
Width = factoryImage.Image.Size.Width/1.3333333,
Height = factoryImage.Image.Size.Height/1.3333333
};
pdf.AddPage(page);
using (var xgr = XGraphics.FromPdfPage(pdf.Pages[i]))
{
xgr.DrawRectangle(new SolidBrush(Color.Black), 0, 0, 595, 842);
using (var xImg = XImage.FromGdiPlusImage(new Bitmap(outStream)))
{
xgr.DrawImage(xImg, 0, 0);
}
}
}
}
}
}
pdf.Save(path);
pdf.Close();
}
}
GC.Collect();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment