Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
everliving
0 / 0 / 0
Регистрация: 26.12.2010
Сообщений: 3
#1

Побитовое считывание bmp-файла - Objective-C

21.02.2012, 18:36. Просмотров 1574. Ответов 3
Метки нет (Все метки)

Здравствуйте! Задача состоит в том чтобы прочесть bmp файл и представить его в виде битовой матрицы дальше работать с матрицей и уже вывести отредактированное изображение обратно так же в формате bmp! Как сделать в c++ я примерно представляю происходит с помощью класса CImage методами Load(...) ! Как реализовать подобное в Objective-C я не знаю, подскажите пожалуйста, если возможно с примера с помощью каких классов можно это реализовать, очень хочется в этом разобраться! Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2012, 18:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Побитовое считывание bmp-файла (Objective-C):

Запись и Считывание файла - Objective-C
Всем доброе время суток.У меня возникла такая проблема. Мне надо через itunes загрузить в телефон файл, а в xcode обратиться к нему и...

Побитовое считывание файла - C++
Стоит задача: Дан начальный файл любого формата (mp3,avi, и т.д.) Требуется считать его содержимое и представить его в виде битовой...

Побитовое считывание числа в длинной арифметике - Алгоритмы
Хочу сделать либу (знаю, что изобретаю очередной велосипед) для работы с длинной арифметикой, однако решил хранить числа не в виде массива...

Считывание bmp - C++
Здравствуйте, мне надо считать изображение, содержащая только 2х цветную палитру, и просканировать картинку на наличие черных пикселей,...

Считывание и запись .bmp файлов - C++
Здравствуйте. Помогите, пожалуйста, разобраться почему не работает сохранение bmp файла. Открываю 1 файл, загружаю его и все данные...

Побитовое чтения файла - Visual Basic .NET
Всем здравия! Дело обстоит так, я ни разу не программист, все мои познания в языках программирования ограничиваются несколькими...

3
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.02.2012, 19:30 #2
Если вам нужны именно данные - как вариант:
Objective-C
1
NSData *myImageData = [NSData dataWithContentsOfFile:@"filename"];
Это если я правильно понял... Будет кучка байтов.
1
everliving
0 / 0 / 0
Регистрация: 26.12.2010
Сообщений: 3
21.02.2012, 20:08  [ТС] #3
Простите а с помощью функции NSImage можно что -то сделать? Насколько я помню из теории нужно получить двухмерный массив где каждый элемент массива будет содержать 3 числа собственно r g b если не путаю!
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.02.2012, 15:57 #4
*UIImage это раз, не NS.

А так - скопируйте данный метод себе, и подсуньте ему на вход имя вашей картинки. Лучше не большую картинку, скажем 3х3 пиксела, иначе в лог дофига вылетит:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
-(void)imageDump:(NSString*)file
{
    UIImage* image = [UIImage imageNamed:file];
    CGImageRef cgimage = image.CGImage; // все идет через CGImage
 
    size_t width  = CGImageGetWidth(cgimage);
    size_t height = CGImageGetHeight(cgimage);
 
    size_t bpr = CGImageGetBytesPerRow(cgimage);
    size_t bpp = CGImageGetBitsPerPixel(cgimage);
    size_t bpc = CGImageGetBitsPerComponent(cgimage);
    size_t bytes_per_pixel = bpp / bpc;
 
    CGBitmapInfo info = CGImageGetBitmapInfo(cgimage);
 
    NSLog(
        @"\n"
        "===== %@ =====\n"
        "CGImageGetHeight: %d\n"
        "CGImageGetWidth:  %d\n"
        "CGImageGetColorSpace: %@\n"
        "CGImageGetBitsPerPixel:     %d\n"
        "CGImageGetBitsPerComponent: %d\n"
        "CGImageGetBytesPerRow:      %d\n"
        "CGImageGetBitmapInfo: 0x%.8X\n"
        "  kCGBitmapAlphaInfoMask     = %s\n"
        "  kCGBitmapFloatComponents   = %s\n"
        "  kCGBitmapByteOrderMask     = %s\n"
        "  kCGBitmapByteOrderDefault  = %s\n"
        "  kCGBitmapByteOrder16Little = %s\n"
        "  kCGBitmapByteOrder32Little = %s\n"
        "  kCGBitmapByteOrder16Big    = %s\n"
        "  kCGBitmapByteOrder32Big    = %s\n",
        file,
        (int)width,
        (int)height,
        CGImageGetColorSpace(cgimage),
        (int)bpp,
        (int)bpc,
        (int)bpr,
        (unsigned)info,
        (info & kCGBitmapAlphaInfoMask)     ? "YES" : "NO",
        (info & kCGBitmapFloatComponents)   ? "YES" : "NO",
        (info & kCGBitmapByteOrderMask)     ? "YES" : "NO",
        (info & kCGBitmapByteOrderDefault)  ? "YES" : "NO",
        (info & kCGBitmapByteOrder16Little) ? "YES" : "NO",
        (info & kCGBitmapByteOrder32Little) ? "YES" : "NO",
        (info & kCGBitmapByteOrder16Big)    ? "YES" : "NO",
        (info & kCGBitmapByteOrder32Big)    ? "YES" : "NO"
    );
 
    CGDataProviderRef provider = CGImageGetDataProvider(cgimage);
    NSData* data = (id)CGDataProviderCopyData(provider);
    [data autorelease];
    const uint8_t* bytes = [data bytes];
 
    printf("Pixel Data:\n");
    for(size_t row = 0; row < height; row++)
    {
        for(size_t col = 0; col < width; col++)
        {
            const uint8_t* pixel =
                &bytes[row * bpr + col * bytes_per_pixel];
 
            printf("(");
            for(size_t x = 0; x < bytes_per_pixel; x++)
            {
                printf("%.2X", pixel[x]);
                if( x < bytes_per_pixel - 1 )
                    printf(",");
            }
 
            printf(")");
            if( col < width - 1 )
                printf(", ");
        }
 
        printf("\n");
    }
}
1
22.02.2012, 15:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2012, 15:57
Привет! Вот еще темы с ответами:

Побитовое чтение файла - Delphi
1.Взять файл C:\1.jpg(например) 2.Побитно записать его в C:\2.jpg(например) Я уже пару дней видел эту темку но сегодня пол раздела...

Побитовое чтение файла - Java SE
Обьсните, пожалуйста, как происходит чтение побайтово из файла? Открываем поток FileInputStream inputStream = new...

Побитовое чтение файла - C#
приветствую всех! Возник вопрос. Необходимо открыть файл(любого формата) побитово, как это лучше сделать?

Побитовое чтение текстового файла - C (СИ)
Здравствуйте, перейдем сразу к делу: Нужно побитово считать текстовый файл и далее к каждому биту применить (через XOR) число из другого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru