none
usando InterpolationMode nella nuova immagine ridimensionata trovo differenti DPI dall'originale RRS feed

  • Domanda

  • prendo un jpeg fatto con samsung wb35f pix H 2592 pix W 1944

    lo scalo con .net InterpolationMode a un jpeg a 75*100 o multilplo 600*800 come vedete il rapporto rimane sempre lo stesso rispetto all'originale

    w          h          h / w                 w / h

    600       800       1,333333333      0,75

    75        100       1,333333333      0,75

    1944     2592     1,333333333      0,75

    la foto di destinazione la apro con gimp (o simili) come pixel trovo i giusti pixel come dpi (risoluzione x e y in gimp su print size) trovo differenti dall'originale o se li setto manualmente li trovo leggermente differenti, cioè se setto a 96 in in gimp 95.xxx se setto 150 trovo in gimp 149,987

    i pixel dell'immagine ridimensionata sono giusti visti da gimp o visualzzati con msgbox da .net

    Ora uno dice chi se ne frega i dpi sono una cosa fisica della stampa o del monitor, ma se provo a mettere l'immagine su una pagina html non la vede finché non apro la nuova immagine con gimp ed aggiusto la risoluzione su scale size ad un intero preciso 96 o 150.

    parte di codice (provato anche con getthumb ed altri metodi )

            Dim bmpDest As New Bitmap(newWidth, newHeight)

            bmpDest.SetResolution(NewRes, NewRes)

            Using gDst As Graphics = Graphics.FromImage(bmpDest)

                gDst.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

                gDst.PageUnit = GraphicsUnit.Pixel

                gDst.DrawImage(ImgSource, 0, 0, bmpDest.Width, bmpDest.Height)

                gDst.Dispose()

            End Using

             Return bmpDest

     Dante


    giovedì 12 febbraio 2015 10:23

Risposte

  • Trovato il problema, non avevo definivo il tipo immagine tramite ImageFormat, questo anche perchè pensavo che lo ereditasse dall'immagine originale, perciò aggiungendo

    resized.Save(P, System.Drawing.Imaging.ImageFormat.Jpeg)

    l'immagine viene salvata a 96 DPI come impostato e IE (qualsiasi versione) la apre senza problemi e Gimp vede correttamente anche le dimensioni in mm

    quindi RISOLTO il problema dei DPI non congruenti con le dimensioni ed errore in pagine HTML con queste immagini ridimensionate tramite Graphic.DrawImage

    Saluti a tutti

    • Contrassegnato come risposta dante vs venerdì 13 febbraio 2015 17:15
    venerdì 13 febbraio 2015 17:15

Tutte le risposte

  • Grazie Andrea

    ma con Encoder vado a modificare la compressione, quello che mi serve è modificare solo i pixel creando un thumbnail, fin qua nessun problema il jpeg piccolo viene creato, il problema lo ha internet explorer (qualsiasi versione anche le ultime su w8) ed alcuni programmi vecchi window che quanto caricano l'immagine non ci riescono. Esempio Firefox o Chrome la visualizza senza problemi.

    Quindi il problema che ho attualmente penso sia quello dei DPI che se anche io li setto a 96 manualmente tramite SetResolution o non li setto per niente, la nuova immagine creata su disco ha 95,987 come risoluzione verticale ed orizzontale vista da Gimp (o simili), la dimensione in pixel è corretta, se modifico l'unità di misura in Gimp da pixel a mm e poi modifico i DPI a 96 precisi noto che la dimensione in mm della sola larghezza da 19.85 diventa 19.84.E se provo a mettere in Gimp 19.85 non me lo fa fare perche a 96 DPI 75 pixel sono 19.84 mm

    Qui c'è il problema in VB io setto i pixel non i mm, setto la risoluzione a 96 non a 95.987. Dovrei lavorare con i mm ? non penso proprio chi se ne frega delle dimensioni fisiche la mia immagine è 75*100 pixel e questo mi basta a Ie perchè guarda i DPI mentre FireFox e Chrome No.

    Ci troviamo in un doppio Bug .NET Framwork che non salva i DPI impostati e Ie che non apre immagini che hanno dimensioni fisiche non coerenti con la moltiplicazione tra DPI e Pixel.

    Saluti Dante.

    venerdì 13 febbraio 2015 11:36
  • Trovato il problema, non avevo definivo il tipo immagine tramite ImageFormat, questo anche perchè pensavo che lo ereditasse dall'immagine originale, perciò aggiungendo

    resized.Save(P, System.Drawing.Imaging.ImageFormat.Jpeg)

    l'immagine viene salvata a 96 DPI come impostato e IE (qualsiasi versione) la apre senza problemi e Gimp vede correttamente anche le dimensioni in mm

    quindi RISOLTO il problema dei DPI non congruenti con le dimensioni ed errore in pagine HTML con queste immagini ridimensionate tramite Graphic.DrawImage

    Saluti a tutti

    • Contrassegnato come risposta dante vs venerdì 13 febbraio 2015 17:15
    venerdì 13 febbraio 2015 17:15