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

Открытие и запись bmp-файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как подсчитать Длину строки в двойном массиве char http://www.cyberforum.ru/cpp-beginners/thread245401.html
Как подсчитать Длину строки в двойном массиве char char c; int a; for(int j=0;j<10;j++) for(int i=0;i<10;i++) cin >> c;//Здесь я в вожу содержание //а здесь нужно в a засунуть длину строки c;
C++ работа с файлами Подскажите, как в текстовом файле напечатать все строки, длина которых равна заданному числу? http://www.cyberforum.ru/cpp-beginners/thread245378.html
C++ Нахождение точки пересечения функций
Необходимо вычислить абсциссы точек пересечения 3 функций. Отрезки, где программа будет искать точки пересечения, определить вручную. Сделать методом хорд (секущих). В программе описать функцию root(f, g, a, b, esp, x, f1, f2), где f и g - функции, а,b - отрезок, где точки пересечения, esp - точность (короче говоря, шаг, с которым функция проходит отрезок ), x - корень, f1, g1 - производные. ...
решение на c++ C++
Добрый день... Не могу решить 2 задачи...И не знаю где ошибка... Прошу пожалуйста - укажите на ошибки(помогите их исправить), буду вам очень признателен за помощь.. Задача №1 Папа Карло подарил Буратино 1 доллар в его первый день рождения, а экономный Буратино сложил подарок в банку. Каждый последующий год папа Карло удваивал свой предыдущий подарок и прибавлял к нему столько долларов,...
C++ Знаки елементов. http://www.cyberforum.ru/cpp-beginners/thread245368.html
Условие: Ввести с клавиатуры N элементов и проверить чередуются ли знаки. Если да , то вывести на экран "знаки одинаковые". Если нет, то написать все элементы со знаком "+" или "-". С++ Добавлено через 24 минуты плс срочно надо... Добавлено через 35 секунд
C++ Преобразованиие Хафа для линий через opencv #include <stdafx.h> #include <cv.h> #include <highgui.h> #include <math.h> int main(int argc, char** argv) { argv = "images/p1.png"; IplImage* image = cvLoadImage( argv, CV_LOAD_IMAGE_GRAYSCALE подробнее

Показать сообщение отдельно
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
19.02.2011, 23:50     Открытие и запись bmp-файла
Добавлено через 25 минут
совсем забыл про выравнивающие биты - было всё норм, т.к. случайно угадал с размерами изображения) да и вы походу тоже забыли)

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
// find_error.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include<iostream>
#include "Windows.h";
 
int main()
{       
 
     // Объявляем структуры
     BITMAPFILEHEADER bfh_l;
     BITMAPINFOHEADER bih_l;
         RGBTRIPLE rgb_l;
        
        FILE * f1, * f2;
        
        f1 = fopen("1.bmp", "r+b");
        f2 = fopen("3.bmp", "w+b");
 
 
        fread(&bfh_l,sizeof(bfh_l),1,f1);               //Запихиваем файловый заголовок в структуру BITMAPFILEHEADER
        fwrite(&bfh_l, sizeof(bfh_l), 1, f2);   //
        fread(&bih_l,sizeof(bih_l),1,f1);               //Запихиваем заголовок изображения в структуру BITMAPINFOHEADER
        fwrite(&bih_l, sizeof(bih_l), 1, f2);   //
 
    size_t padding = 0;
    if ((bih_l.biWidth * 3) % 4) padding = 4 - (bih_l.biWidth * 3) % 4;
 
        for(int i=0;i< bih_l.biHeight;i++)
        {
                for (int j = 0; j < bih_l.biWidth; j++)
        {
 
                        fread(&rgb_l, sizeof(rgb_l),1, f1);
                        fwrite(&rgb_l, sizeof(rgb_l), 1, f2);
 
                        
                }
            for (size_t t = 0; t < padding; ++t) {
                fread(&rgb_l, sizeof(rgb_l),1, f1);
                fwrite(&rgb_l, sizeof(rgb_l), 1, f2);
            }
                
        }
                
        fcloseall();
    
   return 0;
}
Добавлено через 14 минут
поправочка - заменить это
C++
1
2
3
4
for (size_t t = 0; t < padding; ++t) {
          fread(&rgb_l, sizeof(rgb_l),1, f1);
           fwrite(&rgb_l, sizeof(rgb_l), 1, f2);
}
на это
C++
1
2
3
4
if(padding != 0) {
    fread(&rgb_l, padding,1, f1);
    fwrite(&rgb_l, padding, 1, f2);
}
 
Текущее время: 03:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru