TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06.01.2003, 05:25   #1 (permalink)
Gast
 

Registriert seit: 22.01.2002
Beiträge: 20.356

Gast befindet sich auf einem aufstrebenden Ast

Standard Bitmaps in C

sososo...
Ich hab gehört dass hier n paar gosu programmierer sind, und da will ich mein glück mal hier versuchen

also ich will ne bitmap einlesen und die kontraste verstärken (alle heller wie 127 auf 0 setzen und alle dünkler 127 auf 255)
der code ist wie folgt:

Code:
#include "stdafx.h" 
#include "stdio.h" 
#include "stdlib.h" 



int main(int argc, char* argv[]) 
{ 


struct bmpformat 
{ 
unsigned short Identifier; 
unsigned long FileSize; 
unsigned long Reserved; 
unsigned long Bitmap_Data_Offset; 
unsigned long Bitmap_Header_Size; 
unsigned long Width; 
unsigned long Height; 
unsigned short Planes; 
unsigned short Bits_per_Pixel; 
long Compression; 
unsigned long Bitmap_Data_Size; 
unsigned long HResolution; 
unsigned long VResolution; 
unsigned long Colors[256]; 
unsigned long ImportantColors; 
unsigned long Palette; 
unsigned char Data[1000000]; 
}; 

struct bmpformat bitmap; 



FILE *lesen; 


lesen=fopen("C:\\bild2.bmp", "r"); 

char tmp = fgetc(lesen); 
char tmp2 = fgetc(lesen); 

bitmap.Identifier=(((unsigned short)tmp2)<<8|tmp); 

char *ptr=(char*)&bitmap.Identifier; 
printf("\n Identifier=%c%c", *ptr, *(ptr+1)); 


fread(&bitmap.FileSize, sizeof(bitmap.FileSize), 1, lesen); 
fread(&bitmap.Reserved, sizeof(bitmap.Reserved), 1, lesen); 
fread(&bitmap.Bitmap_Data_Offset, sizeof(bitmap.Bitmap_Data_Offset), 1, lesen); 
fread(&bitmap.Bitmap_Header_Size, sizeof(bitmap.Bitmap_Header_Size), 1, lesen); 
fread(&bitmap.Width, sizeof(bitmap.Width), 1, lesen); 
fread(&bitmap.Height, sizeof(bitmap.Height), 1, lesen); 
fread(&bitmap.Planes, sizeof(bitmap.Planes), 1, lesen); 
fread(&bitmap.Bits_per_Pixel, sizeof(bitmap.Bits_per_Pixel), 1, lesen); 
fread(&bitmap.Compression, sizeof(bitmap.Compression), 1, lesen); 
fread(&bitmap.Bitmap_Data_Size, sizeof(bitmap.Bitmap_Data_Size), 1, lesen); 
fread(&bitmap.HResolution, sizeof(bitmap.HResolution), 1, lesen); 
fread(&bitmap.VResolution, sizeof(bitmap.VResolution), 1, lesen); 
fread(&bitmap.Colors, sizeof(bitmap.Colors), 1, lesen); 
fread(&bitmap.ImportantColors, sizeof(bitmap.ImportantColors), 1, lesen); 
fread(&bitmap.Palette, sizeof(bitmap.Palette), 1, lesen); 
fread(&bitmap.Data, sizeof(bitmap.Data), 1, lesen); 


for(unsigned int a=0; a<bitmap.Bitmap_Data_Size; a++) 
{ 

if(bitmap.Data[a]>=127) 
{ 
bitmap.Data[a]=255; 
} 
if(bitmap.Data[a]<127) 
{ 
bitmap.Data[a]=0; 
} 

} 


fclose(lesen); 

FILE *schreiben; 

schreiben=fopen("C:\\bild.bmp", "w+"); 

fwrite(&bitmap.Identifier,sizeof(bitmap.Identifier), 1, schreiben); 
fwrite(&bitmap.FileSize, sizeof(bitmap.FileSize),1,schreiben); 
fwrite(&bitmap.Reserved,sizeof(bitmap.Reserved), 1, schreiben); 
fwrite(&bitmap.Bitmap_Data_Offset, sizeof(bitmap.Bitmap_Data_Offset),1,schreiben); 
fwrite(&bitmap.Bitmap_Header_Size,sizeof(bitmap.Bitmap_Header_Size), 1, schreiben); 
fwrite(&bitmap.Width, sizeof(bitmap.Width),1,schreiben); 
fwrite(&bitmap.Height,sizeof(bitmap.Height), 1, schreiben); 
fwrite(&bitmap.Planes, sizeof(bitmap.Planes),1,schreiben); 
fwrite(&bitmap.Bits_per_Pixel,sizeof(bitmap.Bits_per_Pixel), 1, schreiben); 
fwrite(&bitmap.Compression, sizeof(bitmap.Compression),1,schreiben); 
fwrite(&bitmap.Bitmap_Data_Size,sizeof(bitmap.Bitmap_Data_Size), 1, schreiben); 
fwrite(&bitmap.HResolution, sizeof(bitmap.HResolution),1,schreiben); 
fwrite(&bitmap.VResolution,sizeof(bitmap.VResolution), 1, schreiben); 
fwrite(&bitmap.Colors, sizeof(bitmap.Colors),1,schreiben); 
fwrite(&bitmap.ImportantColors,sizeof(bitmap.ImportantColors), 1, schreiben); 
fwrite(&bitmap.Palette, sizeof(bitmap.Palette),1,schreiben); 
for(unsigned int u=0; u<bitmap.Bitmap_Data_Size; u++) 
{ 
fprintf(lesen, "%c", bitmap.Data[u]); 
} 
fclose(schreiben); 

return 0; 
}
das problem ist, dass das programm immer nur das erste bit von bitmap.Data einliest und so oft dupliziert wie es die schleife wiederholt...

daraus folgt wenn das erste bit >127 ist wird das bild schwarz, wenn es <127 ist wird das bild komplett weiss

ich hab keinen plan wo mein fehler da liegen könnte...

würd mich wirklich freuen wenn ihr mir nen anstoss geben könntet was da faul ist

thx schonmal im voraus für eure verbrauchten grauen zellen

so far
Sting
Gast ist offline   Mit Zitat antworten
Antwort

Stichworte
bitmaps


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved