2017-07-27 2 views

Répondre

0

Vous devez convertir votre image GIF au format PNG (ou JPEG) à l'aide des classes UWP BitmapDecoder/BitmapEncoder, puis créer une PdfPngImage (ou PdfJpegImage) pouvant être utilisée dans PdfFlowTableImageCell.

MISE À JOUR: Le code ci-dessous montre comment convertir une image GIF en PNG dans UWP (il suppose que votre image GIF est dans un cours d'eau):

// Stream gifStream = your image stream 
BitmapDecoder gifDecoder = 
    await BitmapDecoder.CreateAsync(gifStream.AsRandomAccessStream()); 
BitmapFrame gifFrame = await gifDecoder.GetFrameAsync(0); 
PixelDataProvider gifPixels = await gifFrame.GetPixelDataAsync(); 

InMemoryRandomAccessStream pngStream = new InMemoryRandomAccessStream(); 
BitmapEncoder pngEncoder = 
    await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, pngStream); 
pngEncoder.SetPixelData(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight, 
    gifFrame.PixelWidth, gifFrame.PixelHeight, 
    96, 96, gifPixels.DetachPixelData()); 
await pngEncoder.FlushAsync(); 
pngStream.Seek(0); 

PdfPngImage pngImage = new PdfPngImage(pngStream.AsStream()); 
+0

OK. Merci Mihai. J'essaie de comprendre comment convertir un flux GIF/ISF (je n'ai pas de fichier physique, juste un flux) en un flux PNG qui est requis par PdfPngImage. Jusqu'à présent, pas de chance. – ata6502

+0

@ ata6502 J'ai mis à jour ma réponse avec le code montrant comment convertir une image GIF en PNG –

+0

Merci Mihai. J'ai essayé votre code mais cela n'a pas fonctionné comme prévu. L'image PNG apparaît sur le rapport PDF sous la forme d'un rectangle noir. Après un examen plus approfondi, il s'est avéré que la longueur du flux GIF source était de 2490 octets, mais que le flux PNG de sortie n'était que de 259. Je ne suis pas sûr de savoir pourquoi il y a un tel écart. Peut-être que c'est parce que le GIF a des infos ISF. Quoi qu'il en soit, je voudrais vous envoyer le fichier GIF que j'essaie d'inclure dans le PDF, mais je ne vois aucune option pour le faire sur StackOverflow. – ata6502