C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[62628] Re:JPG 파일에 텍스트 합성
박영목.월천 [] 1520 읽음    2010-10-11 04:13
load_jpg.png 495.5KB 저의 아이들 사진
HowToWriteToJPG.zip 857.4KB 소스, 실행파일, 원본사진
안녕하세요.  부산에 계속 살고 있는 월천입니다. 저도 초보인데...  그냥 어제 밤샘을 좀 했더니 낮잠을
자게 되고.. 쩝   잠이 오지 않내요... 그래서...  재미있을 것 같아서...  시작했는 데..  이것도 제법 시간이
갔습니다.  이렇게 되면 오늘 또 낮잠을 자게 될 것 같습니다. 후유증.... ㅋㅋㅋ

저도 사용한지 몇년 되다 보니....  어떻게 사용하더라...???  좀 찾고 한다고....   찾을 때는 google로 하세요
다른 사이트는 답이 없습니다.  검색은 당연히 영어로...

아~ 그리고 마크나 그림도 투명하게 넣을 수 있을 것입니다. 거의 100%,  연구해 보시면... 쉬울 것입니다.

그리고 웹에서 사용하실 것인가요?  PHP 같은 언어에서 사용하게끔 나온 것도 돌아 다닐 것인데..
굳이 응용해서 할 필요가? 웹에서 원본 손상 주지 않고 보여질 때... 마크 투명하게 넣어서...
보여줄 수 있는 데... 제가 해 본 것은 아니고... 몇년 전 PHP 프로그래머가 하더군요...
어디서 찾아보고... 반나절 안걸렸는 데... 그리고 다른 웹언어라고 하더라도 그런 소스나 자료가 있을
것입니다.  웹에서 사용할 것이면 웹프로그래머에게 자료를 찾아 적용시키라고 하세요... 간단히..
해결될 것입니다. 저는 요즘 PHP도 좀 해보고 JSP도 해보고 합니다. JSP가 상당히 괜찮다는 생각이
아직 초보라... 다 만들지는 못하고 연습하는 정도... 이런 것은 언제 사용하지... 웹프로그래머로 전향할까?

그래도 질문을 하셨으니...  답을 드려야지요...  GDI+에서도 잘 될 것이라 생각합니다.
방법은 여러가지이지만... 원리는 같으니까!

여기서는 GR32 Component를 사용했습니다. 이게 알파값을 넣을 수 있기 때문에... 투명값을 조절할 수 있습니다.
저도 왠만하면 이런 것 잘 사용하지 않는 데... 이런 곳에는 사용하는 것이 정신 건강에 이롭겠지요...

JPG에 글을 쓴다. JPG는 손실압축이지요... 글을 쓰려고 하면 바로 쓸 수 없습니다. 컴퓨터 내부에서 그림(GIF, JPG...)은 전부 BITMAP로 처리되지요... BITMAP로 바꾸어야  뭐 할 수 있다는... GIF, JPG는 사실 그림이기 보다는 그냥 DATA
로 보시면 되고 이것을 읽어서 풀어 화면에 나타날 때는 BITMAP이라 보시면 됩니다. 저도 잘 몰라요...
어디서 들었는지... 그냥 그렇게 생각하는지... 중요한 것도 아니고... ㅋㅋㅋ

어쨌던 JPG은 BITMAP를 손상시키면서 압축을 시켜두었고... 이것을 다시 불러와서 BITMAP으로 만들고
그 위에 글을 반투명하게 쓰고 다시 JPG로 압축해야 하니.... 또 손실이 조금 발생하겠지요...

다 아실 것인데... 혹 모르는 다른 분이 있을까 싶어 적어 보았습니다.


그냥 소스 보시면 이해가 쉬울 것입니다.

그리고 소스, 실행파일 전부 올립니다. 참고 하시고...

물론 GR32를 설치하셔야 합니다. 이것 자료실에 있을 것이고 사용법이나 설치법들은 이곳에 계시는 많은 고수님들께 물어보면 답을 주실 것입니다.

그럼 저는 이제 물러 갑니다.  하시는 프로젝트 잘 끝내시기를 바랍니다.   


//---------------------------------------------------------------------------

#include 
#include 
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "GR32_Image"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


// D://mychildren.JPG 를 불러와서...
// 글자를 반투명하게 넣고 ...
// D://mychildren_copy.JPG 로 저장한다.

// 투명도 조절할 수도 있다.

void __fastcall TForm1::BtnLoadClick(TObject *Sender)
{
  //TImage로 JPG로 불러온다.
  Image321->Bitmap->LoadFromFile( "D:\\mychildren.JPG" );
}
//---------------------------------------------------------------------------


void __fastcall TForm1::BtnWriteClick(TObject *Sender)
{
  Image321->Bitmap->Font->Name  = "Arial Black";
  Image321->Bitmap->Font->Size  = 36;
  Image321->Bitmap->Font->Style = Image321->Bitmap->Font->Style << fsBold;;
  Image321->Bitmap->RenderText( 96, 32, "Merry Christmas", 200, 0x80FF0000);
                                 //x  y   내용               //안티알리아싱,
  //Image321->Bitmap->RenderText( 96, 32, "Merry Christmas", 200, 0x80FF0000);

  //0x80FF0000  80: BYTE는 FF이면 투명도 없음, 80이면 중간 정도입니다.
  //그 다음 FF 00 00 는 알겠지요...  R G B 입니다. 
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BtnSaveClick(TObject *Sender)
{
  //JPG로 저장하기 위해...
  TJPEGImage  *jpg = new TJPEGImage();

  //Image32에서 바로 TJPEGImage에 넣지 못하므로 TBitmap로 바꾼다. 그리고  TJPEGImage으로
  Graphics::TBitmap *bmp = new Graphics::TBitmap();
  bmp->Assign(Image321->Bitmap);
  jpg->Assign( bmp );

  jpg->CompressionQuality = 80;   //80%로
  jpg->Compress();                //압축한다.  물론 손실압축이지요.

  jpg->SaveToFile( "D:\\mychildren_copy.JPG"  );

  delete bmp;
  delete jpg;
}
//---------------------------------------------------------------------------


 


이지석 님이 쓰신 글 :
: JPG 파일에 테스트나 특정 심볼을 약간 반투명하게 결합시키서 그 파일에 다시 업데이트 시키려고 합니다.
: 즉, 쇼핑몰 보면 이미지 도용을 막기위해 자기가 찍은 사진위에 특정 텍스트나 자기회사 로고를 반투명하게 결합시키잖아요?
:
: 그런 원리로 프로그램에서 하려고 하는데요... 어디서부터 시작해야 할지 막막하네요.
:
: 아시는분 조언 부탁드리겠습니다...

+ -

관련 글 리스트
62615 JPG 파일에 텍스트 합성 이지석 955 2010/10/08
62628     Re:JPG 파일에 텍스트 합성 박영목.월천 1520 2010/10/11
62634         Re:Re:이미지를 결합할때는 어떻게 해야 하나요??? 이지석 863 2010/10/11
62642             Re:Re:Re:이미지를 결합할때는 어떻게 해야 하나요??? 박영목.월천 3370 2010/10/11
62643                 Re:Re:Re:Re:잘됩니다!!! 이지석 1528 2010/10/11
62639             Re:Re:Re:이미지를 결합할때는 어떻게 해야 하나요??? 박영목.월천 1115 2010/10/11
62633         Re:Re:JPG 파일에 텍스트 합성 이지석 1019 2010/10/11
62618     Re:JPG 파일에 텍스트 합성 천재범 1266 2010/10/08
62632         Re:Re:JPG 파일에 텍스트 합성 이지석 1089 2010/10/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.