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

Не могу найти ошибку в коде. BMP файл, поворот на 90 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при использовании типа ifstream http://www.cyberforum.ru/cpp-beginners/thread647842.html
Заголовочный файл "user.h" #pragma once class User { public: void Read(ifstream& data); }; Файл "user.cpp" #include <fstream>
C++ Сортировка массива Дан массив, элементы которого равны либо 1 либо 2. Отсортировать таким образом, чтобы за каждой единицей следовала двойка, причём если таких элементов больше, они выписывались в конец. Например (2,1,1,1,2,1). Должно получится 1,2,1,2,1,1. http://www.cyberforum.ru/cpp-beginners/thread647832.html
Функция для узнавания пути к системной папке C++
Я на басике с помощью какой-то функции получал стринг-строку какой угодно папки: будь то раб стол или же апплиикатион дата. С переходом на с++ я во-первых забыл саму функцию, методом тыка я бы ее интерпретировал, во-вторых я ее не нашел ни в мсдн ни в висуалбасик через его подбор. Хелп ме. п.с сори было впадлу переключать 100500 раз язык
C++ error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию
Вот код: class University { string name; Human *chief; public: vector<Faculty> subList;
C++ Проблемы с C++ http://www.cyberforum.ru/cpp-beginners/thread647829.html
Вот в универе дали код проги и сказали розабраться и обьяснить что это как оно работает и с чем его едять. Помогите разобраться что это вообще.Я чайник в СИ, ничего не понимаю=( // arraysIntoFunctions.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "header.h" #include "iostream"
C++ Нужно подправить код и сделать dll Всем привет. кто может оказать помощь такого плана - есть исходники одной проги на с++ (калькулятор для одной игры). нужно подправить их и скомпилировать в виде dll, чтобы в последствии можно было подключить к другой проге на c# (моей) и использовать расчеты из либы. у меня она даже не компилируется, выдает кучу ошибок в вс2010. хотя когда то давно когда стоял рад студио все отлично... подробнее

Показать сообщение отдельно
iTD
 Аватар для iTD
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 29
07.09.2012, 18:12  [ТС]     Не могу найти ошибку в коде. BMP файл, поворот на 90
Я же тебе рабочий код написал
Спасибо большое Я им воспользуюсь, но должен и я же что то написать

Добавлено через 7 минут
C++
1
2
3
4
5
6
//  Вычисляем новую длину строки с учетом выравнивания
    unsigned rowLength = hdrOut.width * hdrOut.depth / 8 + hdrOut.width % 4;
    //  Вычисляем новый размер изображения
    hdrOut.bitmapSize = rowLength * hdrOut.height;
    //  Устанавливаем новый размер файла
    hdrOut.fileSizeLow = hdrOut.bitmapSize + hdrOut.headerSize;
Вот только немного понять не могу, разве в моем случае нужно считать новую длину строки ?
Или это на случай, если исходная картинка будет иметь разрешение не кратное 4 ?

Добавлено через 1 час 11 минут
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
/* Написать программу, формирующую по исходному BMP файлу новый BMP файл,
    повернутый на 90 градусов влево. */
 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
 
struct RGB
{
    BYTE    rgbtBlue;
    BYTE    rgbtGreen;
    BYTE    rgbtRed;
} p[320*480];
 
void main ()
{
    FILE *f1, *f2;
    BITMAPFILEHEADER bmfh;
    BITMAPINFOHEADER bmih;
    RGBTRIPLE RGBColor;
    
    f1=fopen("1.bmp", "r+b");
    fread(&bmfh, sizeof(bmfh), 1, f1);
    fread(&bmih, sizeof(bmih), 1, f1);
    int h, w;
    w=bmih.biWidth;
    h=bmih.biHeight;
    
    f2=fopen("2.bmp", "w+b");
    bmih.biWidth=h;
    bmih.biHeight=w;
    fwrite(&bmfh, sizeof(bmfh), 1, f2);
    fwrite(&bmih, sizeof(bmih), 1, f2);
    
    int k=0, j=w;
    for(int i=0; i<bmih.biHeight*bmih.biWidth; i++)
    {
        fread(&RGBColor, sizeof(RGBColor),1, f1);
        p[i].rgbtBlue=RGBColor.rgbtBlue;
        p[i].rgbtGreen=RGBColor.rgbtGreen;
        p[i].rgbtRed=RGBColor.rgbtRed;
    }
 
    for(int i=0; i<bmih.biHeight*bmih.biWidth; i++)
    {
        if(i!=0 && i%h==0)
        {
            k=0;
            j--;
        }
 
        fwrite(&p[(h*w)-(k*w)-j], sizeof(RGB), 1, f2);
        k++;
    }
    fcloseall();
}
Вот, получилось перевернуть Но пробывал только на одной бмпшке. Осталось доработать код и готово !
 
Текущее время: 23:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru