Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
bmp파일 읽어들이고 저장하기..
bitmap 파일을 읽어 들여서 저장하는 방법에 대해 알고 싶습니다..
헤더와 팔레트,데이터를 읽어 들여 이 정보를 통해 화면에 뿌려주는 방식을 알고 싶습니다.
기존에 프로그래밍 해 보신 분이나..
좋은 의견있으신 분들 꼭 도와 주세요..
어떻게 시작해야 할지를 몰라서요..
그리고..
bitmap 구조에 대해 잘 아시는 분 자료 좀 보내 주십시요..
메일만 기다리고 있겠습니다..
1
COMMENTS
jinifan
•
1999.09.13 11:54
안녕 하세요? 지니팬입니다.
여기 BMP구조와 예제 하나 써넣을께요...
BMP 구조는 강의실에서 이정욱님의 강좌가 있는데 링크가 않되네요(...?...)
그럼 즐거운 코딩 되세요...
지니 팬이었습니다...
반전처리 예제...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure jinifanInvert(User: TImage);
var
X, Y, K, U :Integer;
ChangeTemp, OriginTemp: PByte;
Color:array [0..2] of Byte;
IInfoSizeTemp, IImageSizeTemp: Dword;
BiTemp: PBitmapInfo;
begin
User.Picture.Bitmap.PixelFormat:= pf24bit;
//비트맵값 얻기...
GetDibSizes(User.Picture.Bitmap.Handle, IInfoSizeTemp, IImageSizeTemp);
GetMem(BiTemp, IInfoSizeTemp);
GetMem(OriginTemp, IImageSizeTemp);
GetMem(ChangeTemp, IImageSizeTemp);
GetDIB(User.Picture.Bitmap.Handle, User.Picture.Bitmap.Palette, BiTemp^, OriginTemp^);
//이미지 데이터 변환부분...
//이부분을 응용하시면 아주 빠른 이미지 프로세싱 결과값을 얻으실 수 있습니다....
for Y:= 0 to BiTemp^.BmiHeader.BiHeight-1 do begin
for X:= 0 to BiTemp^.BmiHeader.BiWidth-1 do begin
for K:=0 to 2 do begin
Color[K]:= OriginTemp^;
Inc(OriginTemp);
end;
for U:=0 to 2 do begin
ChangeTemp^:= 255 - Color[U];
Inc(ChangeTemp);
end;
end;
end;
Dec(OriginTemp, BiTemp^.BmiHeader.BiHeight * BiTemp^.BmiHeader.BiWidth * 3);
Dec(ChangeTemp, BiTemp^.BmiHeader.BiHeight * BiTemp^.BmiHeader.BiWidth * 3);
//비트맵값 넣기...
SetDIBits(User.Canvas.Handle, User.Picture.Bitmap.Handle, 0,
BiTemp^.BmiHeader.BiHeight, ChangeTemp, BiTemp^, DIB_RGB_COLORS);
FreeMem(OriginTemp);
FreeMem(ChangeTemp);
User.Refresh;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//만약에 이미지에 BMP 화일을 로드한상태라면...
jinifanInvert(Image1);
end;
end.
비트맵 구조
1.비트맵 파일 헤더 (Bitmap File Header)
2.비트맵 인포헤더 (Bitmap Info Header)
3.팔레트 (Pallette)
4.이미지 데이터
파일 헤더 선언부
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //BM 이라고 써있으면 bmp
DWORD bfSize; //이미지 크기
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; //이미지 데이터가 있는 곳의 포인터
} BITMAPFILEHEADER
인포헤더 선업부
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //현 구조체의 크기
LONG biWidth; //이미지의 가로 크기
LONG biHeight; //이미지의 세로 크기
WORD biPlanes; //플레인수
WORD biBitCount //비트 수
DWORD biCompression; //압축 유무
DWORD biSizeImage; //이미지 크기
LONG biXPelsPerMeter; //미터당 가로 픽셀
LONG biYPelsPerMeter; //미터당 세로 픽셀
DWORD biClrUsed; //컬러 사용 유무
DWORD biClrImportant; //중요하게 사용하는 색
} BITMAPINFOHEADER;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
김운식
1999.09.13 09:43
0
COMMENTS
/
0
LIKES
Activex에서 Activex Movie 사용하기...
김운식
1999.09.13 09:29
0
COMMENTS
/
0
LIKES
Activex에서 웹 브라우져 버튼 컨트롤...
ysol
•
•
1999.09.13 09:28
1
COMMENTS
/
1
LIKES
bmp파일 읽어들이고 저장하기..
bitmap 파일을 읽어 들여서 저장하는 방법에 대해 알고 싶습니다.. 헤더와 팔레트,데이터를 읽어 들여 이 정보를 통해 화면에 뿌려주는 방식을 알고 싶습니다. 기존에 프로그래밍 해 보신 분이나.. 좋은 의견있으신 분들 꼭 도와 주세요.....
jinifan
•
1999.09.13 11:54
안녕 하세요? 지니팬입니다. 여기 BMP구조와 예제 하나 써넣을께요... BMP 구조는 강의실에서 이정욱님...
김지영
•
1999.09.13 08:12
1
COMMENTS
/
0
LIKES
급] DB에 대해 아시는 분은 좀 도와주세요.
이재식
•
1999.09.13 19:38
잘 보았습니다. 대충 무슨이야기인지는 알겠는데, 여전히 의구심만 나는 글이네요. 저에게 한번 소스를 ...
김영애
•
1999.09.13 05:58
2
COMMENTS
/
0
LIKES
여러개의 에디트에서요...
권경부
•
1999.09.13 09:39
김영애 wrote: > 안녕하세요!! > 지금 어떤 프로그램(?)을 하고 있는데요... > > 전화번호 필드를 mas...
박홍석
•
1999.09.13 08:17
김영애 wrote: > 안녕하세요!! > 지금 어떤 프로그램(?)을 하고 있는데요... > > 전화번호 필드를 mas...
김지엽
•
1999.09.13 05:23
1
COMMENTS
/
0
LIKES
음성을 합성녹음하려면..
돌팔이
•
1999.09.15 05:39
김지엽 wrote: > 늘 질문만 올려서 죄송하기 그지 없는 델파이 초보입니다. > (저도 왠만큼 배우고 나면...
델초보
1999.09.12 18:41
0
COMMENTS
/
0
LIKES
리소스에 대해서...
임성룡
•
1999.09.12 08:16
2
COMMENTS
/
0
LIKES
dbgrid와 child폼
문승진
•
1999.09.13 23:34
임성룡 wrote: > 1. dbgrid에서 post를 하고 다운이 되어도 세이브가 되는게 > dbisavechanges(table1...
신인재
•
1999.09.13 00:57
임성룡 wrote: > 1. dbgrid에서 post를 하고 다운이 되어도 세이브가 되는게 > dbisavechanges(table1...
Lyle
•
1999.09.12 05:53
3
COMMENTS
/
0
LIKES
C -> Pascal
안치봉
•
1999.09.12 10:03
도움이 될지는 모르겠으나... 일단은 이렇게 하면 되지 않을까 합니다. (99.9% 이론상으로.... -.-;;) ...
Lyle
•
1999.09.12 10:49
안치봉 께서 말씀하시기를... > 도움이 될지는 모르겠으나... 일단은 이렇게 하면 되지 않을까 합니다. >...
안치봉
•
1999.09.12 18:23
궁극적으로 무엇을 구현할려고 하시려는지 잘은 모르겠으나....-.-;; 간단히 숫자의 위치를 바꾼다고 숫...
HUNIGA
•
1999.09.12 04:33
1
COMMENTS
/
0
LIKES
엑세스디에서 날짜필드를 이용해 SELECT하기
지영근
•
1999.09.12 05:50
HUNIGA 께서 말씀하시기를... > 데이타베이스에 저장된 날짜필드와 MASKEDIT에 입력한 값을 비교하여 > ...
경동욱
•
1999.09.12 04:00
1
COMMENTS
/
0
LIKES
Q ..FTP server에 관해서.......
김영대
•
1999.09.13 17:24
경동욱 wrote: > 안녕하세요 > FTP server 프로그램을 만들려고 하는데 > server 와 client 간의 접속...
강성만
•
1999.09.12 02:18
2
COMMENTS
/
0
LIKES
인스톨쉴드 사용시 에라
문성준
•
1999.09.13 22:19
강성만 wrote: > 안녕하세요 > MS-SQL7.0과 델파이4.0을 사용 중입니다. > 인스톨 쉴드를 만들어서 프로...
이정욱
•
1999.09.13 12:22
혹시 Alias 설정을 하지 않으신것 아닌지 모르겠네요. 드라이버들은 설치 되었어도 알리아스가 없어서 DB...
노상균
•
1999.09.12 02:15
1
COMMENTS
/
0
LIKES
저장이 안돼요
이재식
•
1999.09.12 06:04
로직이 잘못됐습니다. 귀하께서 입력과 수정을 동시에 생각하는 루틴입니까?, 아니면 입력만을 생각한 루...
이우영
•
1999.09.12 00:23
1
COMMENTS
/
0
LIKES
NT에서 프로세스 목록 구하는 방법?
김영대
•
1999.09.13 17:28
안녕하세요 이우영님... 제가 저번주 내내 휴가여서 이제야 글을 보았습니다 제 홈페이지의 "NT 프로세...
자이수니
1999.09.11 21:29
0
COMMENTS
/
0
LIKES
급) DBGrdi에서
홍효선
•
1999.09.11 20:54
1
COMMENTS
/
0
LIKES
VB로 만든 OCX를 Delphi에 사용....?
안치봉
•
1999.09.12 10:10
너무질문이 막현합니다. 좀더 자세히 써주시면 좀더 명쾌한 답변이 있을것 같지 않습니까?. -.-;;(적어도 ...
남윤혁
•
1999.09.11 20:50
1
COMMENTS
/
0
LIKES
오라클의 char타입과 델파이 + C에서 입력 호환???
이재식
•
1999.09.11 21:41
그건 당연합니다. 이유는 char타입의 특성때문에 그래요. 즉, char(8)인데 막상 데이터는 aaa이면 델파...
jerry
•
1999.09.11 20:40
1
COMMENTS
/
0
LIKES
레코드의 일련번호를 삽입삭제를..
지영근
•
1999.09.11 21:09
jerry 께서 말씀하시기를... > 레코드를 삽입할때 마다 그 뒤에 있는 레코드의 일련번호들이 하나씩 증가 ...
김지혜
•
1999.09.11 20:37
2
COMMENTS
/
0
LIKES
급] 테이블을 깨끗하게 모든 레코드를 삭제하고
홍순용
•
1999.09.13 21:45
김지혜 wrote: > 델파이 초보입니다. 레코드는 하나씩 없어지긴하는데 모든 레코드를 한꺼번에 없애는 방...
지영근
•
1999.09.11 20:55
김지혜 께서 말씀하시기를... > 델파이 초보입니다. 레코드는 하나씩 없어지긴하는데 모든 레코드를 한꺼...
최은석
•
1999.09.11 19:24
1
COMMENTS
/
0
LIKES
디비그리드에 연결된 메모필드에서 자료가져오기
김영대
•
1999.09.13 17:30
최은석 wrote: > 디비그리드에 메모필드를 가진 테이블을 연결했는데 > 그리드에 있는 메모필드의 내용을...
ysol
1999/09/13 09:28
Views
699
Likes
1
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
여기 BMP구조와 예제 하나 써넣을께요...
BMP 구조는 강의실에서 이정욱님의 강좌가 있는데 링크가 않되네요(...?...)
그럼 즐거운 코딩 되세요...
지니 팬이었습니다...
반전처리 예제...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure jinifanInvert(User: TImage);
var
X, Y, K, U :Integer;
ChangeTemp, OriginTemp: PByte;
Color:array [0..2] of Byte;
IInfoSizeTemp, IImageSizeTemp: Dword;
BiTemp: PBitmapInfo;
begin
User.Picture.Bitmap.PixelFormat:= pf24bit;
//비트맵값 얻기...
GetDibSizes(User.Picture.Bitmap.Handle, IInfoSizeTemp, IImageSizeTemp);
GetMem(BiTemp, IInfoSizeTemp);
GetMem(OriginTemp, IImageSizeTemp);
GetMem(ChangeTemp, IImageSizeTemp);
GetDIB(User.Picture.Bitmap.Handle, User.Picture.Bitmap.Palette, BiTemp^, OriginTemp^);
//이미지 데이터 변환부분...
//이부분을 응용하시면 아주 빠른 이미지 프로세싱 결과값을 얻으실 수 있습니다....
for Y:= 0 to BiTemp^.BmiHeader.BiHeight-1 do begin
for X:= 0 to BiTemp^.BmiHeader.BiWidth-1 do begin
for K:=0 to 2 do begin
Color[K]:= OriginTemp^;
Inc(OriginTemp);
end;
for U:=0 to 2 do begin
ChangeTemp^:= 255 - Color[U];
Inc(ChangeTemp);
end;
end;
end;
Dec(OriginTemp, BiTemp^.BmiHeader.BiHeight * BiTemp^.BmiHeader.BiWidth * 3);
Dec(ChangeTemp, BiTemp^.BmiHeader.BiHeight * BiTemp^.BmiHeader.BiWidth * 3);
//비트맵값 넣기...
SetDIBits(User.Canvas.Handle, User.Picture.Bitmap.Handle, 0,
BiTemp^.BmiHeader.BiHeight, ChangeTemp, BiTemp^, DIB_RGB_COLORS);
FreeMem(OriginTemp);
FreeMem(ChangeTemp);
User.Refresh;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//만약에 이미지에 BMP 화일을 로드한상태라면...
jinifanInvert(Image1);
end;
end.
비트맵 구조
1.비트맵 파일 헤더 (Bitmap File Header)
2.비트맵 인포헤더 (Bitmap Info Header)
3.팔레트 (Pallette)
4.이미지 데이터
파일 헤더 선언부
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //BM 이라고 써있으면 bmp
DWORD bfSize; //이미지 크기
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; //이미지 데이터가 있는 곳의 포인터
} BITMAPFILEHEADER
인포헤더 선업부
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //현 구조체의 크기
LONG biWidth; //이미지의 가로 크기
LONG biHeight; //이미지의 세로 크기
WORD biPlanes; //플레인수
WORD biBitCount //비트 수
DWORD biCompression; //압축 유무
DWORD biSizeImage; //이미지 크기
LONG biXPelsPerMeter; //미터당 가로 픽셀
LONG biYPelsPerMeter; //미터당 세로 픽셀
DWORD biClrUsed; //컬러 사용 유무
DWORD biClrImportant; //중요하게 사용하는 색
} BITMAPINFOHEADER;