Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Как сравнивать regex выражения? https://www.cyberforum.ru/ cpp/ thread1863531.html
std::vector <std::regex> lex; lex.push_back(std::regex("^()*")); lex.push_back(std::regex("^()*")); Вот как сравнить два выражения, положенных в lex?
C++ Компиляция консольного приложения. Ошибка msvcp120.dll
Добрый день. Cсоздаю проект консольного приложения фреймворк 2.0 ставлю(не знаю влияет ли это на проблему) Компилировал на релизе на двух компиляторах студии один 2015 другой 2013. После переноса exe на другие машины выскакивает ошибка: Библиотека msvcp120.dll отсутствует. Приложение не удается запустить. Объясните мне как обойти данную проблему. Как мне сделать так чтобы эту библиотеку не...
C++ Как перевести регулярное выражение в строку? Есть рег. выражение: std::vector <std::regex> op; op.push_back(std::regex("^()*")); , Как перевести его в string? Т.е. получить из него "("? https://www.cyberforum.ru/ cpp/ thread1863172.html C++ Expression: c <= -1 && c >= 255 https://www.cyberforum.ru/ cpp/ thread1863163.html
Пишу мини курсовую. На ввод принимаются только цифры. И нужна поставить проверку на ввод, то есть отсечь буквы, символы и т.д. Мой код: bool vvod(string str) { int len; char *s; len = str.length(); // находим длину введённой строки s = new char; // создаём символьный массив, равной длине введённой строки strcpy_s(s, str.length() + 1, str.c_str()); // переводим строку в символьный...
Кейлоггер грузит процессор C++
Программа грузит процессор. Написал я наконец-то кейлоггер. Но появилась интересная особенность: когда кейлоггер, т.е. exe работает, то его процесс грузит компьютер на 50 %. С чем это может быть связано? Вообще кто сталкивался с тем, что его программы начинали грузить процессор, как справлялись?
C++ Алгоритм Шнорра Всем привет. Может кто поможет в написании алгоритма (задано по криптографии). Вот сам алгоритм по шагам(пример): 1. Выбирается простое р=48731 и простое q=443 ((p-1)(modq)=0); 2. Вычисляется g из условия g^q=1(mod p), в данном случае g=11444; 3. Сторона А выбирает закрытый ключ w=357 и вычисляет открытый ключ y=g^(-w) (mod p)=7355; 4. Открытый ключ(48731,443,11444,7355), a закрытый –... https://www.cyberforum.ru/ cpp/ thread1862964.html
C++ Как организовать код записи БД в файл и потом его прочтения из файла? Как можно организовать код записи БД в файл и потом его прочтения из файла? Просто на ПП задали такое заданьеце, и теперь надо на DevC++ сделать. https://www.cyberforum.ru/ cpp/ thread1862528.html C++ Поиск всех возможных путей в графе по отдельности
Здравствуйте. Задача такова: Есть граф кодовых пересечений ГКП (3,2,1) (на рисунке). Параметры n - длина кода, k - основание кода, r - мощность пересечения. На вход программе подается начальная и конечная вершина. На выходе должна получится кодовая запись каждого возможного пути от начальной вершины до конечной по отдельности с указанием длины пути. Кодовая запись формируется следующим образом...
C++ Создание программы на тему Центр информационных технологий Основание для разработки. 1.1. Основанием для разработки программного продукта служит задание «Технология разработки программного обеспечения» на тему «Центр информационных технологий». 1.2. Наименование работы: База Данных «Центр информационных технологий» 1.3. Исполнитель: Цыренжапов А.Б. 1.4. Соисполнитель: нет 1. Назначение разработки Программный продукт разрабатывается с целью... https://www.cyberforum.ru/ cpp/ thread1859186.html C++ Определить состояние пико-контроллера Schneider ELectric https://www.cyberforum.ru/ cpp/ thread1859061.html
Добрый день. У нас имеется контроллер, который присылает значения True/false Кто-нибудь сможет помочь в написании программы, которая бы показывала, включен или выключен контроллер. И если есть какие-нибудь мысли, то как мне можно вывести значения температуры и влажности, которые он так же способен присылать... http://uk.rs-online.com/webdocs/0111/0900766b80111990.pdf...
Как выделить подгруппу в enum? C++
Добрый вечер, enum class Units { WARIOR_LIGHT, WARRIOR_HEAVY, ARCHER_A, ARCHER_B, ARCHER_C,
C++ Написать медицинский справочник Нужно написать программу,которая по разным симптомам будет выдавать болезни,не понимаю как это реализовать. :( https://www.cyberforum.ru/ cpp/ thread1858358.html
17 / 1 / 0
Регистрация: 28.11.2016
Сообщений: 6
30.11.2016, 22:01  [ТС] 0

Загрузка и сохранение BMP файла - C++ - Ответ 9836737

30.11.2016, 22:01. Показов 4504. Ответов 6
Метки (Все метки)

Ответ

Nick Alte, в таком случае я не совсем понял, где именно не нужно домножать... Вы не могли бы объяснить конкретнее?

Добавлено через 4 минуты
Nick Alte, кажется понял... При записи в файл я прибавляю к указателю индекс внешнего цикла * ширину строки...
А ширину строки-то взял в пикселях, а не в байтах))))) спасибо за ответ, сейчас попробую!!!

Добавлено через 40 минут
Совет Nick Alte помог! Выкладываю финальную версию функций загрузки и сохранения, которые заработали нормально, может быть, кому-то поможет мое творчество)

id файла и структура заголовка
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "windows.h"
 
typedef unsigned __int16    FILE_ID;
 
typedef struct
{
    unsigned __int32 size = 54;     //сюда надо будет прибавить размер массива c паддингами
    unsigned __int16 rzrv1 = 0;
    unsigned __int16 rzrv2 = 0;
    unsigned __int32 offset = 54;   //смещение массива данных относительно начала файла = sizeof(file_id) + sizeof(BMPheader)
    BITMAPINFOHEADER dib;
}       BMP_HEADER;
функция загрузки изображения в массив char. При этом удаляются ненужные паддинги, и полученный массив представляет собой набор идущих подряд пикселей.
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
unsigned char* loadBMP(const char *fname, int &x_pix, int &y_pix)
{
    FILE_ID id;
    BMP_HEADER bh;
    size_t res;
    unsigned int x_bytes, bytes, i, j, padding;
    unsigned char *v, tmp;
 
    x_pix = y_pix = -1;
    FILE *f = fopen(fname, "rb");
    if (!f)
    {
        return NULL;
    }
    res = fread(&id, 1, sizeof(FILE_ID), f);
    if (res != sizeof(FILE_ID))
    {
        fclose(f);
        return NULL;
    }
    res = fread(&bh, 1, sizeof(BMP_HEADER), f);
    if (res != sizeof(BMP_HEADER))
    {
        fclose(f);
        return NULL;
    }
 
    /* */
    x_pix = bh.dib.biWidth;
    y_pix = bh.dib.biHeight;
 
    //находим длину строки в байтах и округляем с учетом паддингов
    x_bytes = x_pix * 3;                //каждый пиксель занимает 3 байта в строке
    if ((x_bytes % 4) != 0)
    {
        padding = (4 - (x_bytes % 4));
        bytes = x_bytes + padding;
    }
    else
    {
        bytes = x_bytes;
    }
    v = new unsigned char[bytes * y_pix];
 
    for (i = 0; i < y_pix; i++)
    {
        for (j = 0; j < bytes; j++)
        {
            if (j < x_bytes)
            {
                fread((v + j + 0 + (i * x_bytes)), 1, 1, f);
                fread((v + j + 1 + (i * x_bytes)), 1, 1, f);
                fread((v + j + 2 + (i * x_bytes)), 1, 1, f);
                j += 2;
            }
            else
            {
                fread(&tmp, 1, 1, f);
            }
        }
    }
 
    return v;
}
функция сохранения
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
int saveBMP(const char *fname, unsigned char *v, int x_pix, int y_pix)
{
    unsigned int x_bytes, bytes, i, j, padding;
    unsigned char tmp = 255;
    BMP_HEADER bh;
    memset(&bh, 0, sizeof(bh));
    FILE_ID id = 0x4d42;
    //находим длину строки в байтах и округляем с учетом паддингов
    x_bytes = x_pix * 3;                //каждый пиксель занимает 3 байта в строке
    if ((x_bytes % 4) != 0)
    {
        padding = (4 - (x_bytes % 4));
        bytes = x_bytes + padding;
    }
    else
    {
        bytes = x_bytes;
    }
    //размер файла 54 байта заголовок + массив данных
    bh.size += bytes * y_pix;
    //заполняем DIB заголовок
    bh.dib.biSize = 40;                 //размер заголовка
    bh.dib.biWidth = x_pix;             //ширина картинки
    bh.dib.biHeight = y_pix;                //высота картинки
    bh.dib.biPlanes = 1;
    bh.dib.biBitCount = 24;
    bh.dib.biCompression = 0;
    bh.dib.biSizeImage = bytes * y_pix; //размер массива данных 
    bh.dib.biXPelsPerMeter = 2835;
    bh.dib.biYPelsPerMeter = 2835;
    bh.dib.biClrUsed = 0;
    bh.dib.biClrImportant = 0;
    //открываем файл
    FILE *f = fopen(fname, "wb");
    if (!f) return -1;
    //пишем заголовок
    size_t res;
    res = fwrite(&id, 1, sizeof(FILE_ID), f);
    if (res != sizeof(FILE_ID))
    {
        fclose(f);
        return -1;
    }
    res = fwrite(&bh, 1, sizeof(BMP_HEADER), f);
    if (res != sizeof(BMP_HEADER))
    {
        fclose(f);
        return -1;
    }
    //пишем массив данных
    for (i = 0; i < y_pix; i++)
    {
        for (j = 0; j < bytes; j++)
        {
            if (j < x_bytes)
            {
                fwrite((v + j + 0 + (i * x_bytes)), 1, 1, f);
                fwrite((v + j + 1 + (i * x_bytes)), 1, 1, f);
                fwrite((v + j + 2 + (i * x_bytes)), 1, 1, f);
                j += 2;
            }
            else
            {
                fwrite(&tmp, 1, 1, f);
            }
        }
    }
    fclose(f);
 
    return 0;
}


Вернуться к обсуждению:
Загрузка и сохранение BMP файла C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2016, 22:01
Готовые ответы и решения:

Долгая загрузка .bmp файла после простоя компьютера
Подгружаю по мере надобности .bmp - размер порядка 129 метров каждый. При подгрузке нового...

Сохранение и загрузка из файла
Столкнулся с проблемой загрузки из файла *.ini. для сохранения параметров программы использую...

Сохранение/загрузка xml файла
Привет, нашел вот кодик сохранения/загрузки в/из xml, хочу прикрутить эти функции в отдельный cpp...

Загрузка bmp из файла
Необходимо по нажатию кнопки создать диалоговое окно и открыть выбранный bmp файл. Имеется такой...

6
30.11.2016, 22:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2016, 22:01
Помогаю со студенческими работами здесь

Загрузка bmp файла
установил RAD 2010, auxDIBImageLoad перестал работать(символ не найден пишет мне студия). можете...

Сохранение файла в bmp формате
Кaк сделaть чтoбы пoсле рисoвaния метoдaми line() и circle() мoжнo былo этo сoхрaнить кaк .БМП...

Сохранение и загрузка в файла
На форме есть StringGrid со заполнеными полями, и много заполняемых Edit и кнопка...

Загрузка и сохранение файла на сервере
Доброго времени суток. Сейчас я пытаюсь реализовать загрузку чего либо на сервер и дальнейшего его...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru