06/05/21 17:51
dylan666
Ciao a tutti, devo salvare delle variabili Bitmap in un PDF con iTextSharp e arrivo ad un errore GDI+ quando i file sono grandicelli come dimensioni (inteso base e altezza).
Per la precisione i file originari erano TIFF multi-pagina di cui ogni pagina è stata caricata in un Dictionary(Of String, Bitmap).
La parte incriminata è questa:
Se dopo iTextSharp.text.Image.GetInstance ci metto MyDictionary.Item(MioBitmap) (invece di DicBitmapImageNew) ho l'errore GDI+
Stessa cosa se uso il clone (ed ho letto che è normale).
Se uso il MioBitmapImageNew i file salvati in PDF (anche quelli piccoli) pesano di più.
Noto comunque che la risoluzione di MioBitmapImageNew è 96DPI mentre MioBitmap era a 300DPI.
Capisco quindi che non ne è una copia perfetta... come mai? Come faccio a farne una copia fedele?
PS:
Ho provato anche a trasformare la Btimap come Byte ma appare sempre l'errore generico GDI+
Grazie anticipatamente
Per la precisione i file originari erano TIFF multi-pagina di cui ogni pagina è stata caricata in un Dictionary(Of String, Bitmap).
La parte incriminata è questa:
Dim MioBitmap As String = Path.GetFileName(MioItem.Text) ' Dim MioBitmapImageClone As Bitmap = MyDictionary.Item(MioBitmap).Clone Dim MioBitmapImageNew As New Bitmap(MyDictionary.Item(MioBitmap), MioDictionary.Item(MioBitmap).Size) Dim myImage As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(DicBitmapImageNew, System.Drawing.Imaging.ImageFormat.Tiff)
Se dopo iTextSharp.text.Image.GetInstance ci metto MyDictionary.Item(MioBitmap) (invece di DicBitmapImageNew) ho l'errore GDI+
Stessa cosa se uso il clone (ed ho letto che è normale).
Se uso il MioBitmapImageNew i file salvati in PDF (anche quelli piccoli) pesano di più.
Noto comunque che la risoluzione di MioBitmapImageNew è 96DPI mentre MioBitmap era a 300DPI.
Capisco quindi che non ne è una copia perfetta... come mai? Come faccio a farne una copia fedele?
PS:
Ho provato anche a trasformare la Btimap come Byte ma appare sempre l'errore generico GDI+
Dim ms As New IO.MemoryStream MyDictionary.Item(MioBitmap).Save(ms, Imaging.ImageFormat.Tiff) Dim MyBytes() As Byte = ms.GetBuffer() Dim myImage As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(MyBytes)
Grazie anticipatamente
Ultima modifica effettuata da dylan666 07/05/21 10:06
aaa