Как я могу получить ширину и высоту второй страницы многостраничного изображения, используя класс System.Drawing.Image?C#

Место общения программистов C#
Anonymous
Как я могу получить ширину и высоту второй страницы многостраничного изображения, используя класс System.Drawing.Image?

Сообщение Anonymous »

Используя библиотеку System.Drawing.Image в .Net 4.8, как я могу получить ширину и высоту страницы 2 изображения?
В настоящее время я использую следующее, чтобы получить ширина и высота первой страницы. Но не уверен, как получить ширину и высоту второй страницы. Сначала я просто думал, что все страницы на изображениях будут одинакового размера, но оказалось, что мое тестовое изображение (из трех изображений) имеет очень разные размеры.
using (FileStream stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
{
using (Image tif = Image.FromStream(stream, false, false))
{
float width = tif.PhysicalDimension.Width;
float height = tif.PhysicalDimension.Height;

_imageSize = new Size((int)width, (int)height);
}
}

Также пробовал использовать этот метод, но чувствую, что делаю что-то не так, поскольку сохранение растрового изображения в байтовый поток занимает много времени. Это очень медленно.
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (Bitmap bm = (Bitmap)Image.FromStream(fs, false, false))
{
int frameCount = bm.GetFrameCount(FrameDimension.Page);

if (pageNum < 1)
throw new Exception("The page number can't be less then 1.");

if (pageNum > frameCount)
throw new Exception($"The page number ({pageNum}) can not exceed the total pages ({frameCount}).");

bm.SelectActiveFrame(FrameDimension.Page, pageNum - 1);

MemoryStream byteStream = new MemoryStream();

// This is REALLY slow, tried using bmp format too
bm.Save(byteStream, ImageFormat.Tiff);

Image page = Image.FromStream(byteStream);
float width = page.PhysicalDimension.Width;
float height = page.PhysicalDimension.Height;

return new Size((int)width, (int)height);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-the-sys

Вернуться в «C#»