Jak przekonwertować BITMAP w formacie tablicy bajtów na format JPEG przy użyciu .net 2.0?C#: Jak przekonwertować tablicę bajtów BITMAP na format JPEG?
Odpowiedz
Jakiego rodzaju jest byte[]
? Surowe dane strumieniowe plików? W takim przypadku, jak o czymś takim (używając System.Drawing.dll
w aplikacji klienckiej):
using(Image img = Image.FromFile("foo.bmp"))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
Albo użyć FromStream
z new MemoryStream(arr)
jeśli naprawdę masz byte[]
:
byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
using(Image img = Image.FromStream(new MemoryStream(raw)))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
Jeśli jest to tylko buforowanie nieprzetworzonych danych pikseli, a nie kompletny plik obrazu (w tym nagłówki itp., takie jak JPEG), wtedy nie można używać Image.FromStream.
Myślę, że to, czego szukasz, to System.Drawing.Bitmap.LockBits, zwracając plik System.Drawing.Imaging.ImageData; zapewnia to dostęp do odczytywania i zapisywania pikseli obrazu za pomocą wskaźnika do pamięci.
public static Bitmap BytesToBitmap(byte[] byteArray)
{
using (MemoryStream ms = new MemoryStream(byteArray))
{
Bitmap img = (Bitmap)Image.FromStream(ms);
return img;
}
}
to jest bitmapa. on chce jpeg. – AnthonyBlake
Prawidłowo, kod nie jest kompletny. Ale zwraca bitmapę, którą możesz później zapisać do pliku w dowolnym formacie .... Myślę, że to moje powitanie w Wojenach Reputacji ... Moja wina i tak. –
@ juanjo.arana, ale nie podałeś odpowiedzi na jego pytanie, tylko powiedział mu, jak uzyskać bitmapę. – gbjbaanb
Drugi był dokładnie tym, czego szukałem. Piszę jednak do innego strumienia MemoryStream niż do pliku. Dzięki! – Marc