Почему конструктор Bitmap не сохраняет информацию о кадре?C#

Место общения программистов C#
Ответить
Anonymous
 Почему конструктор Bitmap не сохраняет информацию о кадре?

Сообщение Anonymous »

Почему конструктор Bitmap не сохраняет информацию о кадре? В приведенном ниже примере, где imagePath используется в качестве пути к трехстраничному изображению в формате tiff, первый тест работает нормально, показывая разные размеры трех страниц. Однако второй тест показывает только размер первой страницы.
/* Returns the following...
Page:1 W/H: 7650/9900
Page:2 W/H: 3600/2025
Page:3 W/H: 3600/2025
Page:1 W/H: 7650/9900
(missing page 2 and 3)
*/

// Test opening using the Image.FromFile method
using (Image img = Image.FromFile(imagePath))
{
int p = img.GetFrameCount(FrameDimension.Page);

for (int i = 0; i < p; i++)
{
img.SelectActiveFrame(FrameDimension.Page, i);
Debug.WriteLine($"Page:{i + 1} W/H: {img.Width}/{img.Height}");
}
}

// Testing opening using the Bitmap constructor
using (Image orgImg = Image.FromFile(imagePath))
{
using (Image img = new Bitmap(orgImg))
{
int p = img.GetFrameCount(FrameDimension.Page);

for (int i = 0; i < p; i++)
{
img.SelectActiveFrame(FrameDimension.Page, i);
Debug.WriteLine($"Page:{i + 1} W/H: {img.Width}/{img.Height}");
}
}
}

В качестве дополнительного вопроса: выполнив следующие действия, я могу получить те же результаты, что и в первом тесте. Но есть ли лучший способ снова получить доступ ко всей коллекции кадров, как в первом тесте, без необходимости создавать еще один объект Bitmap/Image?
/* Returns the following...
Page:1 W/H: 7650/9900
Page:2 W/H: 3600/2025
Page:3 W/H: 3600/2025
*/

// Testing opening by creating a new Image object
using (Image orgImg = Image.FromFile(imagePath))
{
using (Image img = (Image)orgImg.Clone())
{
int p = img.GetFrameCount(FrameDimension.Page);

for (int i = 0; i < p; i++)
{
img.SelectActiveFrame(FrameDimension.Page, i);
Debug.WriteLine($"Page:{i + 1} W/H: {img.Width}/{img.Height}");
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... nformation
Ответить

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

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

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

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

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