2014-11-05 22 views
5

Sto tentando di ridimensionare e quindi ritagliare le immagini in entrata. Ho la mia immagine in un ReadOnlyStream e vorrei inviare a MemoryStream.Ridimensionamento e ritaglio delle immagini con ImageResizer

Sto usando la libreria ImageResizer per fare questo.

Mi piacerebbe che le mie immagini riducessero prima le dimensioni e poi le centravano al quadrato. Sto usando questo codice, ma non produce ciò che richiedo. Produce niente ...

var resultStream = new MemoryStream(); 
ImageJob job = new ImageJob(imageStream, resultStream, new Instructions { 
    Width = 100, 
    Height = 100, 
    Mode = FitMode.Crop 
}); 
job.Build(); 

Questo codice dovrebbe ridurre la risoluzione immagini di grandi dimensioni e ritagliare sulla base di impostazioni predefinite di libreria (al centro il ritaglio).

Non ho fornito alcuna configurazione specifica in web.config perché, come ho capito, non è necessario.

Cosa sto sbagliando?

+0

Quando dici che non produce nulla, vuoi dire che resultStream.Length == 0? Dovrai naturalmente cercare nuovamente il flusso di memoria su 0 dopo che ImageResizer ti ha scritto. –

+0

@ComputerLinguist: ho assunto che i lettori del flusso inizializzassero inizialmente la posizione in modo da evitare che accadesse qualcosa di simile. Fammi provare subito e guarda cosa succede. –

risposta

8

ImageResizer non ripristina la posizione del flusso di output su 0 dopo aver scritto su di esso, in quanto ciò interromperebbe i flussi di scrittura non ricercabili come HttpResponseStream.

È necessario chiamare resultStream.Seek(0, SeekOrigin.Begin); prima di leggerlo.

Problemi correlati