Ik gebruik PDFIumSharp om PDF bestanden in te lezen en middels een thumbnail weer te geven.
Bij het uitlezen van de PDF sla ik de thumbnails tijdelijk op als een image om deze weer te geven in mijn programma.
Ik heb verschillende methodes en bestandsformaten (png/jpg/bmp) geprobeerd, maar ik blijf een zwarte afbeelding over houden. Als de tekst een kleur heeft anders dan zwart dan is deze te lezen en anders valt deze weg op de achtergrond.
Bij wijze van test heb ik de WriteableBitmap als source aan den image control gekoppeld en dan wordt netjes de afbeelding weergegeven met een witte achtergrond. Wat doe ik fout dat ik zwarte thumbnails houd?
Stukje code dat de zwarte thumbnails maakt
Onderstaande code geeft netjes een plaatje met witte achtergrond in de imagebox
Waarom is de output rechstreeks in een image control wel juist en bij save to file niet en krijgt dit een zwarete achtergrond?
Bij het uitlezen van de PDF sla ik de thumbnails tijdelijk op als een image om deze weer te geven in mijn programma.
Ik heb verschillende methodes en bestandsformaten (png/jpg/bmp) geprobeerd, maar ik blijf een zwarte afbeelding over houden. Als de tekst een kleur heeft anders dan zwart dan is deze te lezen en anders valt deze weg op de achtergrond.
Bij wijze van test heb ik de WriteableBitmap als source aan den image control gekoppeld en dan wordt netjes de afbeelding weergegeven met een witte achtergrond. Wat doe ik fout dat ik zwarte thumbnails houd?
Stukje code dat de zwarte thumbnails maakt
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| using var thumb = new PDFiumBitmap((int)page.Width, (int)page.Height, false); page.Render(thumb); // Create a Bitmap object from the PDF render output MemoryStream memoryStreamBMP = new(); thumb.Save(memoryStreamBMP); var thumbImg = new System.Windows.Media.Imaging.BitmapImage(); thumbImg.BeginInit(); thumbImg.StreamSource = memoryStreamBMP; thumbImg.EndInit(); thumbImg.Freeze(); // Convert the BitmapImage to a System.Drawing.Bitmap using (var ms = new MemoryStream()) { BitmapEncoder encoder = new BmpBitmapEncoder(); // Use BmpBitmapEncoder to encode as BMP encoder.Frames.Add(BitmapFrame.Create(thumbImg)); encoder.Save(ms); using (var bmp = new System.Drawing.Bitmap(ms)) { // Create a new bitmap with a white background using (var whiteBackgroundBmp = new System.Drawing.Bitmap(bmp.Width, bmp.Height)) { using (var graphics = System.Drawing.Graphics.FromImage(whiteBackgroundBmp)) { // Fill the background with white graphics.Clear(System.Drawing.Color.White); // Draw the original image on top of the white background graphics.DrawImage(bmp, 0, 0); } // Save the final image with the white background whiteBackgroundBmp.Save(sFileName, System.Drawing.Imaging.ImageFormat.Bmp); } } } |
Onderstaande code geeft netjes een plaatje met witte achtergrond in de imagebox
C#:
1
2
3
| WriteableBitmap bitmap = new WriteableBitmap((int)page.Width, (int)page.Height, 72, 72, PixelFormats.Bgra32, null); page.Render(bitmap); imgTest.Source = bitmap; |
Waarom is de output rechstreeks in een image control wel juist en bij save to file niet en krijgt dit een zwarete achtergrond?