Почему конструктор 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
Почему конструктор Bitmap не сохраняет информацию о кадре? ⇐ C#
Место общения программистов C#
-
Anonymous
1731618028
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}");
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79189676/why-does-the-bitmap-constructor-not-retain-the-frame-information[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия