JPEG파일 BMP로 바꿔주는 C언어 소스

이명수의 이미지

JPEG파일을 BMP파일로 바꿔주는 C언어 소스 코드 좀 알려주세요
소스 코드를 이용하는 방법도 알려주셨으면 감사하겠습니다

어떤 JPG파일이 있을 때 그걸 BMP파일로 바꾼다음에
BMP파일을 열어서 이용해야 되거든요
f = fopen("example.bmp", "rb");

BMP파일 구조는 대충 알아서 BMP파일을 열기만 하면
원하는 대로 이용할 수 있는데

생성되는 이미지 파일이 JPG파일이라서 그걸 BMP로 바꿔서 이용해야 되요
그래서 JPG파일을 BMP파일로 바꾸는 소스나 코드를 중간에 삽입했으면 좋겠는데
코드가 어떻게 되는지 꼭 좀 알려주셨으면 정말 감사드려요

되도록이면 라이브러리나 API같은 거 말고
그냥 간단하게 코드나 소스로 알려주셨으면 좋겠어요

kaje0105의 이미지

JPG 파일을 BMP로 바꾸는게 그리 간단하지 않기 때문에 라이브러리가 나왔겠죠..?

제가 알기론 간단하게 코드나 소스로 JPG를 BMP로 바꿀수 없습니다

라이브러리를 쓰지 않고 BMP->JPG 변환을 해보았는데

아무리 초보시절이라 했지만 천줄 넘는 소스가 나왔습니다

라이브러리를 쓰지 않으려면 그 긴 소스들을 다 쓰셔야 할겁니다

jpg파일에서 헤더를 읽고 헤더 안의 허프만 테이블이나 여러 테이블 정보를 사용해서 실제 Y, cb, cr 데이터를

뽑아 내고 그 Y, Cb Cr 데이터를 RGB 값으로 바꾸워서 BMP 헤더 만들어서 저장하고,,

이런 과정이 간단한 코드로 나올순 없습니다

딱 잘라 말씀드리면 라이브러리를 구하셔서 새로 저장하신 다음에 그걸 다시 오픈을 하시는 방법을 찾는게

빠르실겁니다

이명수의 이미지

헉.. 그렇군요..
답변 감사합니다

죄송하지만 라이브러리 이용하는 법 좀 간단하게나마 알려주실 수 없나요?
라이브러리 쓰는 것도 어려워서..

M.W.Park의 이미지

ImageMagick을 사용하세요. MagickWand도 좋은 선택입니다.

convert foo.jpg foo.bmp

-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

이명수의 이미지

윈도우에서도 ImageMagick 쓸 수 있나요?

망치의 이미지

yum 이용해서 MagickWand 설치하려면 어떻게 해야 하나요?; 아니면 별도 rpm 구할 수 있는곳이라도..

RHEL4 사용중입니다

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

bushi의 이미지

OS 가 뭔지 모르겠는데 Linux 겠지요.
말들이 많긴 하지만, 여기는 Korean Linux Document Project 홈페이지니까요.

MS windows 라면 대강 읽어보시고 바로 http://gnuwin32.sourceforge.net/packages/jpeg.htm

libjpeg 설치하면 djpeg 라는 놈이 묻어옵니다.
(MS windows 용이라면 djpeg.exe)

DJPEG(1)                                                              DJPEG(1)
 
NAME
       djpeg - decompress a JPEG file to an image file
 
SYNOPSIS
       djpeg [ options ] [ filename ]
 
DESCRIPTION
       djpeg  decompresses  the  named  JPEG file, or the standard input if no
       file is named, and produces an image file on the standard output.  PBM-
       PLUS  (PPM/PGM),  BMP,  GIF, Targa, or RLE (Utah Raster Toolkit) output
       format can be selected.  (RLE is supported only if the URT  library  is
       available.)

당연히 libjpeg 소스를 가져다 풀면, djpeg.c 정도의 소스가 있겠습니다.
하지만, 이것보다는 example.c 라는 놈을 보시는 것이 좋습니다.
libjpeg 에 기본적으로 구현된 file I/O 기반의 source/destination manager 를 어떻게 사용하는 지 알 수 있습니다.
comment 제외하면 100줄도 안될거라 봅니다. read_JPEG_file(), write_JPEG_file() 이 각각 30여줄 정도.

libjpeg 를 마스터하시면... libpng 도 거의 공짜로 마스터할 수 있습니다. 좀 과장하면... 함수이름 중 jpeg 를 png 로 바꾸면 될 정도 ?

어찌됐건 BMP 로 바꿀 필요없이 그냥 RGB 데이타를 사용하실 수 있습니다.

libjpeg 는 GPL 이 아닙니다. 같이 배포되는 README 를 읽어보세요.
몇가지 조건만 지켜준다면 고쳐서 바이너리만 팔아먹건 국수를 만들어 드시건 상관없습니다.

OTL

이명수의 이미지

근데요 제가 잘 모르지만
example.c를 가져다 써 보려니까

example.c 소스에는
#include "jpeglib.h"가 있고

jpeglib.h 헤더파일에는
#include "jconfig.h"
#include "jmorecfg.h"가 있는데

이 헤더파일은 존재하지 않아서 에러가 나는데요?

bushi의 이미지

fedora 에선 yum install libjpeg-devel-6b 명령으로 개발지원용 패키지를 추가설치하시면 되고,
MS windows 라면 위에 언급한 사이트에서 developer files 링크를 클릭하시면 됩니다.

OTL

mg2000의 이미지

IJG에서 공개한 JPEG라이브러리(이미 플랫폼별로도 공개가 많이 되어있습니다.)를

이용하시면, 거기 djpeg소스 보시면, BMP로 디코딩하는 예제가 있습니다.

한줄로 간단하게는 안되고요... ^^;;;

BMP로 디코딩하는 함수를 하나 만드시면 될 것 같네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.