Skip to content

Commit

Permalink
Added example on how to render image with opacity
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcinZiabek committed May 24, 2023
1 parent ac237d4 commit 986d380
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 36 deletions.
6 changes: 1 addition & 5 deletions Source/QuestPDF.Examples/Engine/RenderingTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,7 @@ private void Render(IDocument document)

if (ResultType == RenderingTestResult.Pdf)
{
var fileName = $"{FileNamePrefix}.pdf";
document.GeneratePdf(fileName);

if (ShowResult && ShowingResultsEnabled)
Process.Start("explorer", fileName);
document.GeneratePdfAndShow();
}
}
}
Expand Down
68 changes: 37 additions & 31 deletions Source/QuestPDF.Examples/ImageExamples.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
using SkiaSharp;

namespace QuestPDF.Examples
{
Expand Down Expand Up @@ -151,42 +152,47 @@ public void Exception()
.Render(page => page.Image("non_existent.png"));
});
}

[Test]
public void ReusingTheSameImageFileShouldBePossible()
public void DrawingImageWithTransparency()
{
var fileName = Path.GetTempFileName() + ".jpg";

try
{
var image = Placeholders.Image(300, 100);

using var file = File.Create(fileName);
file.Write(image);
file.Dispose();

RenderingTest
.Create()
.ProducePdf()
.PageSize(PageSizes.A4)
.ShowResults()
.Render(container =>
RenderingTest
.Create()
.PageSize(PageSizes.A4)
.ProducePdf()
.ShowResults()
.RenderDocument(document =>
{
document.Page(page =>
{
container
.Padding(20)
.Column(column =>
{
column.Spacing(20);
column.Item().Image(fileName);
column.Item().Image(fileName);
column.Item().Image(fileName);
});
page.Content()
.AlignCenter()
.Text("Test")
.FontSize(192)
.FontColor(Colors.Blue.Medium)
.Bold();
var image = LoadImageWithTransparency("photo.jpg", 0.75f);
page.Foreground().Image(image);
});
}
finally
});

QuestPDF.Infrastructure.Image LoadImageWithTransparency(string fileName, float transparency)
{
File.Delete(fileName);
using var originalImage = SKImage.FromEncodedData(fileName);

using var surface = SKSurface.Create(originalImage.Width, originalImage.Height, SKColorType.Rgba8888, SKAlphaType.Premul);
using var canvas = surface.Canvas;

using var transparencyPaint = new SKPaint
{
ColorFilter = SKColorFilter.CreateBlendMode(SKColors.White.WithAlpha((byte)(transparency * 255)), SKBlendMode.DstIn)
};

canvas.DrawImage(originalImage, new SKPoint(0, 0), transparencyPaint);

var encodedImage = surface.Snapshot().Encode(SKEncodedImageFormat.Png, 100).ToArray();
return Image.FromBinaryData(encodedImage);
}
}
}
Expand Down

0 comments on commit 986d380

Please sign in to comment.