Click here to Skip to main content
15,898,134 members
Home / Discussions / Graphics
   

Graphics

 
AnswerRe: Bitmap blur problem Pin
Tim Craig7-Jun-08 19:46
Tim Craig7-Jun-08 19:46 
GeneralRe: Bitmap blur problem [modified] Pin
Naturality8-Jun-08 2:29
Naturality8-Jun-08 2:29 
GeneralRe: Bitmap blur problem Pin
Tim Craig8-Jun-08 7:56
Tim Craig8-Jun-08 7:56 
GeneralRe: Bitmap blur problem Pin
Naturality8-Jun-08 11:11
Naturality8-Jun-08 11:11 
GeneralRe: Bitmap blur problem Pin
Tim Craig8-Jun-08 11:25
Tim Craig8-Jun-08 11:25 
GeneralRe: Bitmap blur problem Pin
Naturality8-Jun-08 13:11
Naturality8-Jun-08 13:11 
GeneralRe: Bitmap blur problem Pin
Tim Craig8-Jun-08 18:58
Tim Craig8-Jun-08 18:58 
GeneralRe: Bitmap blur problem [modified] Pin
Naturality9-Jun-08 4:44
Naturality9-Jun-08 4:44 
"a few more rookie gotchas." Very rookie Laugh | :laugh:

I've changed the code as you suggested, with a source and destination file. But I get in the output file is a black image with some very dark green lines going vertically across. :Confused | :confused:

Changed it a bit to use a 1,2,1, Matrix. This gives blue and green lines. Gah this is messed up.
2,4,2,
1,2,1

Here's the entire source... again.

// Bitmapblur.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include <windows.h>
#include <iostream>

HANDLE hfile;
HANDLE hfile2;
DWORD written;
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bmp;
RGBTRIPLE *image;



void set_pixel(long x,long y, RGBTRIPLE& colour){	
	image[bmp.biHeight+y*bmp.biWidth+x] = colour;
}

void get_pixel(int x, int y, RGBTRIPLE& colour){
	colour = image[bmp.biHeight+y*bmp.biWidth+x];
	}

void clear_pixel(RGBTRIPLE& colour){
	colour.rgbtBlue = 0;
	colour.rgbtGreen = 0;
	colour.rgbtRed = 0;
}


void copy_pixel(RGBTRIPLE& colour, RGBTRIPLE& colour2){
	colour.rgbtBlue = colour2.rgbtBlue;
	colour.rgbtGreen = colour2.rgbtGreen;
	colour.rgbtRed = colour2.rgbtRed;
}

void avg(RGBTRIPLE colour[], RGBTRIPLE& merge, int size, BYTE Matrix[]) {
    unsigned int blue = 0, green = 0, red = 0;
	for(int i=0; i<size; i++)="" {<br="" mode="hold" />		blue += colour[i].rgbtBlue * Matrix[i] / 16;
		green += colour[i].rgbtGreen * Matrix[i] / 16;
		red += colour[i].rgbtRed * Matrix[i] / 16;
    }
	merge.rgbtBlue = blue / size;
	merge.rgbtGreen= green / size;
	merge.rgbtRed  = red / size;
}

  BYTE Matrix[9] = { 1, 2, 1,
					 2, 4, 2,
				     1, 2, 1 };


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nCmdShow)
{
	
ZeroMemory (&bmp, sizeof bmp);
		bmp.biClrImportant  = 0;
		bmp.biBitCount      = 8;
		bmp.biCompression   = 0;
		bmp.biPlanes        = 1;
		bmp.biSize          = 40;
		bmp.biSizeImage     = 0;
		bmp.biXPelsPerMeter = 0;
		bmp.biYPelsPerMeter = 0;
		bmp.biClrUsed       = 0;
		bmp.biHeight        = 128;
		bmp.biWidth         = 128;

		long paddedsize = bmp.biHeight * bmp.biWidth;
		bfh.bfType = 19778;
		bfh.bfReserved1 = 0;
		bfh.bfReserved2 = 0;
		bfh.bfOffBits = 1078;
		bfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + paddedsize;
		

hfile = CreateFile("noisein.bmp",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
hfile2 = CreateFile("noiseout.bmp",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL,NULL);

ReadFile(hfile,&bfh,sizeof(bfh),&written,NULL);
ReadFile(hfile,&bmp,sizeof(bmp),&written,NULL);
ReadFile(hfile2,&bfh,sizeof(bfh),&written,NULL);
ReadFile(hfile2,&bmp,sizeof(bmp),&written,NULL);

int imagesize = bmp.biWidth*bmp.biHeight;
image = new RGBTRIPLE[imagesize]; 
ReadFile(hfile ,image,sizeof(RGBTRIPLE),&written,NULL);
ReadFile(hfile2,image,sizeof(RGBTRIPLE),&written,NULL);

RGBTRIPLE blank[9]= { 0 };
RGBTRIPLE Merge   = { 0  , 0 , 0  };
int yp=0, xp=0;



for(int y = 1; y < bmp.biHeight; y++){
	for(int x = 1; x < bmp.biWidth; x++){
		for(int i = 0; i < 9; i++){
			{
			get_pixel(x+xp,y+yp,blank[i]); 
			if(xp<3)
				xp++;
			else{
				xp = 0;
				yp++;}
			}
		}
		avg(blank, Merge, 9, Matrix); 
		set_pixel(x,y,Merge);
		clear_pixel(Merge);
		yp=0, xp=0;
}}




WriteFile ( hfile2, &bfh, sizeof(bfh), &bfh.bfSize, NULL );
WriteFile ( hfile2, &bmp, sizeof(bmp), &bfh.bfSize, NULL );
WriteFile ( hfile2, image, paddedsize, &bfh.bfSize, NULL );
CloseHandle(hfile);

}</iostream></windows.h>


"Sir, I protest. I am NOT a merry man!"

modified on Monday, June 9, 2008 12:00 PM

GeneralRe: Bitmap blur problem Pin
Tim Craig9-Jun-08 9:05
Tim Craig9-Jun-08 9:05 
GeneralRe: Bitmap blur problem Pin
Naturality9-Jun-08 9:11
Naturality9-Jun-08 9:11 
GeneralRe: Bitmap blur problem Pin
Naturality9-Jun-08 10:06
Naturality9-Jun-08 10:06 
GeneralRe: Bitmap blur problem Pin
Tim Craig9-Jun-08 14:32
Tim Craig9-Jun-08 14:32 
GeneralRe: Bitmap blur problem Pin
Tim Craig9-Jun-08 15:10
Tim Craig9-Jun-08 15:10 
GeneralRe: Bitmap blur problem Pin
Naturality9-Jun-08 15:43
Naturality9-Jun-08 15:43 
GeneralRe: Bitmap blur problem Pin
Christian Graus9-Jun-08 17:00
protectorChristian Graus9-Jun-08 17:00 
GeneralRe: Bitmap blur problem Pin
Naturality9-Jun-08 17:06
Naturality9-Jun-08 17:06 
GeneralRe: Bitmap blur problem Pin
Tim Craig9-Jun-08 17:27
Tim Craig9-Jun-08 17:27 
GeneralRe: Bitmap blur problem Pin
Naturality9-Jun-08 17:49
Naturality9-Jun-08 17:49 
GeneralRe: Bitmap blur problem Pin
Christian Graus9-Jun-08 19:15
protectorChristian Graus9-Jun-08 19:15 
GeneralRe: Bitmap blur problem Pin
Tim Craig9-Jun-08 20:32
Tim Craig9-Jun-08 20:32 
GeneralRe: Bitmap blur problem Pin
Tim Craig9-Jun-08 20:35
Tim Craig9-Jun-08 20:35 
GeneralRe: Bitmap blur problem Pin
Christian Graus10-Jun-08 4:03
protectorChristian Graus10-Jun-08 4:03 
GeneralRe: Bitmap blur problem Pin
Naturality10-Jun-08 4:24
Naturality10-Jun-08 4:24 
GeneralRe: Bitmap blur problem Pin
Tim Craig10-Jun-08 9:53
Tim Craig10-Jun-08 9:53 
GeneralRe: Bitmap blur problem Pin
Naturality10-Jun-08 10:32
Naturality10-Jun-08 10:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.