Как я могу получить ширину и высоту второй страницы многостраничного изображения, используя класс 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу получить ширину и высоту второй страницы многостраничного изображения, используя класс System.Drawing.Image?
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • ColorTranslator существует как в System.Drawing.Common, так и в System.Drawing.Primitives.
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Преобразование System.Drawing.Font в PdfSharp.Drawing.XFont
    Anonymous » » в форуме C#
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Собственная реализация System.Drawing.Image
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • В GDI+ произошла общая ошибка в System.Drawing.Image.Save.
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

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