Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как получить массив байт 16ти битного изображения, в оттенках серого 
:(
    Опции темы
ruslan777
Дата 17.9.2012, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.7.2012

Репутация: нет
Всего: нет



Добрый день. Нужно получить массив байт 16ти битного tiff. Для 8ми битного изображения и 24х битного RGB использовал след код:
            
            
Код

            Bitmap bmp = new Bitmap(image_path); //путь на диске

            int W = bmp.Width;
            int H = bmp.Height;
            BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, W, H),
                   ImageLockMode.ReadWrite, bmp.PixelFormat);
            int K = Bitmap.GetPixelFormatSize(bmp.PixelFormat) / 8;
            int W_ = (K * W + 3) / 4 * 4;
            int numBytes = W_ * H;
            byte[] rgb = new byte[numBytes];
            System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, rgb, 0, numBytes);
            bmp.UnlockBits(bmpData);


Для 16ти битного изображения выдаеться ошибка уже в первой строке - OutOfMemoryException. Подскажите в чем может быть проблема. Изображение прикрепляю. Заранее спасибо.

Это сообщение отредактировал(а) ruslan777 - 17.9.2012, 17:44

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  G16_1.tif 104,21 Kb
PM MAIL   Вверх
lomaster
Дата 18.9.2012, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: нет
Всего: 2



Ошибка секретная?
PM   Вверх
ruslan777
Дата 18.9.2012, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.7.2012

Репутация: нет
Всего: нет



Цитата(lomaster @ 18.9.2012,  09:28)
Ошибка секретная?

ошибка не секретная, но мне непонятно, почему она появляеться только при попытке загрузки 16ти битного изображения и почему ее нет в других случаях?

Добавлено через 3 минуты и 11 секунд
Возможно я вообще не правильный метод выбрал. Может кто-то подскажет как получить массив байт (тело) 16ти битного tiff, чтобы я мог эти данные использовать для дальнейшей обработки? 
PM MAIL   Вверх
ruslan777
Дата 10.10.2012, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.7.2012

Репутация: нет
Всего: нет



Вопрос решен:
Код

            TiffBitmapDecoder TifDec = new TiffBitmapDecoder(new Uri(imagePath), BitmapCreateOptions.PreservePixelFormat,        BitmapCacheOption.OnLoad);
            BitmapFrame BmpFrame = TifDec.Frames[0];
            pixelArray = new ushort[BmpFrame.PixelWidth * BmpFrame.PixelHeight];
            BmpFrame.CopyPixels(pixelArray, 2 * BmpFrame.PixelWidth, 0);


перед этим нужно подключить (через Add Reference)
using System.Windows.Media;
using System.Windows.Media.Imaging;

Появилась новая проблема: как отобразить изображение (например показать в pictureBox)? Может кто-то знает мотоды отбражения 16 ти битных (также 48 ми битных) изображений?

Это сообщение отредактировал(а) ruslan777 - 10.10.2012, 09:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.