Ridimensionamento immagini dimensioni fisse

venerdì 17 maggio 2013 - 15.15
Tag Elenco Tags  C#  |  .NET 4.0

Gemini Profilo | Expert

Ciao a tutti
ho già delle funzioni che ridimensiona le immagini per altezza o per larghezza e che eseguono il crop.
Ora sono alla ricerca di una funzione che faccia questo: creare immagini, per esempio, 100x100 che dopo aver ridimensionato l'immagine, nel caso questa non sia 100x100, aggiunga uno sfondo in modo tale da avere l'immagine 100x100.
Con il crop riesco ad avere immagini 100x100, ma taglia l'immagine.
Grazie mille

mexico77 Profilo | Junior Member

Allora dovresti ridimensionare l'immagine in modo che non superi i 100x100 e nel caso sia più piccola fare una fuzione che ti crea una img 100x100 e poi incolli la tua di dimensioni inferiori sopra.
www.setteweb.it

gsistemi Profilo | Junior Member

'carico l'immagine originale
dim img, img_bg as System.Drawing.Image
img = System.Drawing.Image.FromFile( "C:\prova.jpg" )

' solo se vuoi un fondo particolare altrimenti lo crea nero
img_bg = System.Drawing.Image.FromFile( "C:\background.jpg" )

' scalo l'immagine
dim w as integer = img.width
dim h as integer = img.height
if ( w / h ) >= ( 100 / 120 ) then
w = cint( 120 * w / h )
h = 120
else
h = cint( h * 100 / w )
w = 100
end if

' calcolo la posizione dell'immagine per centrarla se non è precisa
dim posx as integer = cint( ( w - 100 ) / 2 )
dim posy as integer = cint( ( h - 120 ) / 2 )

'setto i valori per l'immagine nuova (qualità, compressione e colori)
Encoders = myImageCodecInfo(1)
myEncoderParameters = New system.drawing.imaging.EncoderParameters(3)
myEncoderParameters.Param(0) = New system.drawing.imaging.EncoderParameter(system.drawing.imaging.Encoder.ColorDepth, CType(24L, Int32))
myEncoderParameters.Param(1) = New system.drawing.imaging.EncoderParameter(system.drawing.imaging.Encoder.Compression, 0)
myEncoderParameters.Param(2) = New system.drawing.imaging.EncoderParameter(system.drawing.imaging.Encoder.Quality, 80)

'ridimensiono l'immagine originale con le dimensioni che ho calcolato
dim thm as system.drawing.image = img.getthumbnailimage( w, h, nothing, system.intptr.zero )

'creo l'immagine nuova delle dimensioni che mi servono (72F e' la risoluzione DPI)
dim btm as new bitmap( 100, 120 )
dim finale as system.drawing.image = btm
dim grf as system.drawing.graphics
btm.setresolution( 72F, 72F )

'creo la foto finale e la salvo
grf = system.drawing.graphics.fromimage(finale)

'solo se vuoi un fondo particolare
grf.drawimage( img_bg, new rectangle( 0, 0, 100, 120 ), 0, 0, 100, 120, graphicsunit.pixel )

grf.drawimage( thm, new rectangle( 0, 0, 100, 120 ), posx, posy, 100, 120, graphicsunit.pixel )
finale.save( "C:\finale.jpg" )

Ho usato i valori 100x120 per distinguere altezza e larghezza, usa i valori che servono a te.
Spero sia utile, non so se esiste un metodo più facile!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5