2014-11-05 12 views
5

Próbuję zmienić rozmiar, a następnie przycinać kwadratowo przychodzące obrazy. Mam swoje zdjęcie w postaci ReadOnlyStream i chcę wypisać na numer MemoryStream.Zmiana rozmiaru i kadrowanie obrazów za pomocą ImageResizer

Używam biblioteki ImageResizer, aby to zrobić.

Chciałbym, aby moje obrazy najpierw zmniejszyły rozmiar, a następnie wyśrodkowały je kwadratowo. Używam tego kodu, ale nie produkuję tego, czego potrzebuję. Niczego nie produkuje ...

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

Ten kod powinien zmniejszać duże obrazy i przycinać je w oparciu o domyślne ustawienia biblioteki (przycinanie w środku).

Nie podałem żadnej konkretnej konfiguracji w web.config, ponieważ jak rozumiem, to nie jest wymagane.

Co robię źle?

+0

Kiedy mówisz, że nic nie produkuje, masz na myśli, że resultStream.Length == 0? Oczywiście po ponownym zapisaniu do ImageResizera konieczne będzie ponowne wyszukiwanie strumienia pamięci do 0. –

+0

@ComputerLinguist: Zakładałem, że czytelnicy strumienia ustawili początkowo pozycję, aby uniemożliwić coś podobnego. Pozwól mi spróbować od razu i zobacz, co się stanie. –

Odpowiedz

8

ImageResizer nie resetuje pozycji strumienia wyjściowego do 0 po zapisie, ponieważ może to spowodować przerwanie niewymiernych strumieni zapisu, takich jak HttpResponseStream.

Przed rozpoczęciem czytania należy zadzwonić pod numer resultStream.Seek(0, SeekOrigin.Begin);.

Powiązane problemy