|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2007-12-14, 10:40 AM | #1 |
協調管理員
|
疑問 - c的讀圖檔
我對c比較不強
1.如何用c把一個jpg讀入,讀到一個陣列裡? 2.把陣列旋轉? 比如有一個圖片為 [ 1 , 2 3 , 4 ] 旋轉+90度後為 [ 2 , 4 1 , 3 ] -90度為 [ 3 , 1 4 , 2 ] |
__________________ |
|
送花文章: 11706,
|
2007-12-14, 04:12 PM | #2 (permalink) |
管理版主
|
這裡有一篇
http://209.85.173.104/search?q=cache...&lr=lang_zh-TW 是用 C++ 及 GDI+ 示範的是 讀一個 lena.jpg 存成 newlena.jpg 只要對 newImage->SetPixel 之 x,y 重新排列 就可達到旋轉圖像 的功能 正常是 從左上角 0,0 一直讀寫到 右下角 x,y 要轉90度 只要 先讀 y 而 寫入 x 即可 |
送花文章: 2021,
|
2007-12-14, 10:05 PM | #4 (permalink) |
管理版主
|
http://140.129.118.16/~richwang/Imag...Beginning.html
需要點 FreeImage (Open Source) 去下載 FreeImage3100Win32.zip |
送花文章: 2021,
|
2009-02-13, 10:20 PM | #6 (permalink) |
註冊會員
|
用 GDLIB 做圖像旋轉
// 省略不重要部份
.... .... imgtype = JPG; .... File = fopen(Buffer,"rb"); .... .... if(imgtype == JPEG) { img = gdImageCreateFromJpeg(File); } else if(imgtype == GIF) { img = gdImageCreateFromGif(File); } else if(imgtype == PNG) { img = gdImageCreateFromPng(File); } else { img = gdImageCreateFromWBMP(File); } fclose(File); ... ... // rotate angle i = 90; .... aCos = cos (i * .0174532925); aSin = sin (i * .0174532925); size_x = gdImageSX(img); size_y = gdImageSY(img); switch(i) { case 180: if (imgtype == GIF || imgtype == WBMP) new_img = gdImageCreate(size_x,size_y); else new_img = gdImageCreateTrueColor(size_x,size_y); break; case 90: case 270: if (imgtype == GIF || imgtype == WBMP) new_img = gdImageCreate(size_y,size_x); else new_img = gdImageCreateTrueColor(size_y,size_x); break; default: aCos = cos (i * .0174532925); aSin = sin (i * .0174532925); if (imgtype == GIF || imgtype == WBMP) new_img = gdImageCreate(abs((int)(size_x*aCos))+abs((int)(size_y*aSin)), abs((int)(size_y*aCos))+abs((int)(size_x*aSin))); else new_img = gdImageCreateTrueColor(abs((int)(size_x*aCos))+abs((int)(size_y*aSin)), abs((int)(size_y*aCos))+abs((int)(size_x*aSin))); break; } .... .. . 翁 |
送花文章: 4,
|
2009-02-13, 10:33 PM | #7 (permalink) |
註冊會員
|
用 GDLIB 做圖像旋轉 - 2
// 少貼一段
... .. gdImageCopyRotated(new_img, img, (abs((int)(size_x*aCos))+abs((int)(size_y*aSin)))/2, (abs((int)(size_y*aCos))+abs((int)(size_x*aSin)))/2, //size_x/2, size_y/2, 0,0, size_x, size_y, i); gdImageDestroy(img); img = new_img; ... .. . |
送花文章: 4,
|
2009-02-14, 01:45 AM | #8 (permalink) |
長老會員
|
我個人是比較不建議在 Windows 環境下寫 C(當然寫 for windows 的 app 例外)
當然這要看對 C99 標準的支援度要求 至少我看到的 Windows 下的 Compiler,不論是 C++ Builder 還是 MinGW 編出來的東西有的時候會出現 "意想不到" 的結果 還是用 Gnu C 比較實在 用套自己習慣的 Linux 再配上 Eclipse CDT 就很讚了 |
__________________ 思考,正是從一個錯誤,跳進另外一個錯誤。 |
|
送花文章: 5387,
|
|
|
相似的主題 | ||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
如何開啓*.WI 格式圖檔 | koway | 一般電腦疑難討論區 | 2 | 2005-07-23 03:47 PM |
用 IE 存圖檔時的怪現象 | ltu6323 | 一般電腦疑難討論區 | 0 | 2003-08-05 06:01 PM |
gif動畫圖檔-哪裡有呢? | jjordan | 一般電腦疑難討論區 | 3 | 2003-04-19 03:05 PM |