Sto provando a creare un'immagine ridimensionata da una bitmap, impostare una nuova altezza/larghezza e una nuova risoluzione e salvarla in PNG. Posso fare questo sia da direttamente A) Image.FromFile(filename)
o B) New Bitmap(imageSource)
per creare la la A bitmap da passare al B. Entrambi lavorano schmokay va bene, ma Un non mi permette di impostare una nuova larghezza/altezza sulla creazione (ma non mi permette di preservare i valori con useIcm=True
) e B non mi permette di preseve valori.Preservazione dei valori bitmap durante la creazione di una nuova bitmap da System.Drawing.Image
Va bene, d'ora in poi a un codice ed esempi:
Dim sourceBitmap As New Bitmap(imagePath & myImage1Name)
< -non va bene a tutti (# 1 sovraccarico). Non conservare le cose comeHorizontalResolution
oPixelFormat
su.Save
Dim sourceBitmap2 As Bitmap = Image.FromFile(imagePath & myImage1Name, True)
< -non buona (# 5 sovraccarico). si fa conservare le cose comeHorizontalResolution
oPixelFormat
su.Save
, ma non si mi permette di inizializzare immagine con un nuovo formato.Dim targetBitmap As New Bitmap(sourceBitmap2, newWidth, newHeight)
< -non valido. Anche sesourceBitmap2
(vedi sopra # 2) è stato inizializzato conuseIcm=True
, è non ha importanza una volta che ho passato è come la fonte intargetBitmap
.
Fondamentalmente, io sto cercando un modo per contruct una nuova bitmap sia con qualcosa come useIcm=True
e impostare la larghezza/altezza al tempo stesso (Width
/Height
sono proprietà di sola lettura una volta che è creato) .
Ho percorso il percorso Graphics.DrawImage
ed è lo stesso - Graphics.FromImage(sourceBitmap)
non conserva i valori.
Perché sono necessari questi valori da conservare? Perché ho bisogno di convertire queste immagini in PNG (per dimensioni del file) con una nuova risoluzione e mantenere le stesse dimensioni fisiche (w/h in pollici) per la stampa. Conosco la nuova larghezza/altezza del pixel necessaria in base ai valori di risoluzione che inoltrerò con .SetResolution(xDpi,yDpi)
per preservare le dimensioni fisiche, quindi non è questo il problema. Il problema è che le cose come la PixelFormatSize
devono rimanere invariate (sì, ho provato EncoderParameters
- non funzionano. Posso darti i dettagli cruenti se vuoi, ma basti dire che per ora, semplicemente non lavoro).
Whew, me lo sono tolto dal petto! Ok, chi sa davvero come funziona tutto questo può aiutare?
EDIT: tipi di file necessari per eseguire il pull in PNG: BMP, TIF, GIF, WMF, EMF.
Riflettore potrebbe essere tuo amico qui. Potresti essere in grado di determinare una combinazione esatta di costruttore e API che ti fornisce ciò che desideri. –
Grazie Marco. Non ho familiarità con Reflector, ma darò un'occhiata. Sembra potenzialmente promettente. –