Как преобразовать BITMAP в формат массива байтов в формат JPEG, используя .net 2.0?
С#: Как преобразовать массив байтов BITMAP в формат JPEG?
Ответ 1
Какой тип byte[]
вы имеете в виду? Необработанные данные потока файлов? В этом случае, как насчет чего-то вроде (используя System.Drawing.dll
в клиентском приложении):
using(Image img = Image.FromFile("foo.bmp"))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
Или используйте FromStream
с new MemoryStream(arr)
, если у вас действительно есть byte[]
:
byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
using(Image img = Image.FromStream(new MemoryStream(raw)))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
Ответ 2
Если это всего лишь буфер с исходными пиксельными данными, а не полный файл изображения (включая заголовки и т.д., например JPEG), вы не можете использовать Image.FromStream.
Я думаю, что вы можете искать System.Drawing.Bitmap.LockBits, возвращая System.Drawing.Imaging.ImageData; это обеспечивает доступ к чтению и записи пикселей изображения с помощью указателя на память.
Ответ 3
public static Bitmap BytesToBitmap(byte[] byteArray)
{
using (MemoryStream ms = new MemoryStream(byteArray))
{
Bitmap img = (Bitmap)Image.FromStream(ms);
return img;
}
}