(1)編譯
g++ `Magick++-config --cxxflags --cppflags` -I/usr/local/include/ImageMagick-7 mtile6d.c `Magick++-config --ldflags --libs` -L/usr/local/zlib/lib -lz -Wall -export-dynamic -lm -o mtile6d
(2)執行
treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ ./mtile6d 圖磚合併程式的語法 ./mtile6d 1.png 2.png 3.png 4.png 5.png 6.png col row 輸出併圖結果檔為mtile6d.jpg
treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ ./mtile6d 312x2689-4x3-cw1.png 312x2686-4x3-cw2.png 312x2683-4x3-cw3.png 312x2680-4x3-cw4.png 312x2677-4x3-cw5.png 312x2674-4x3-cw6.png 2 1 argv[1]=312x2689-4x3-cw1.png argv[2]=312x2686-4x3-cw2.png argv[3]=312x2683-4x3-cw3.png argv[4]=312x2680-4x3-cw4.png argv[5]=312x2677-4x3-cw5.png argv[6]=312x2674-4x3-cw6.png
0 0(0,0) 1 1(1,0) 輸出六圖合併後的圖檔 xtile6d.jpg 成功! treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ mv xtile6d.jpg xtile6d2x1.jpg
treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ ./mtile6d 312x2689-4x3-cw1.png 312x2686-4x3-cw2.png 312x2683-4x3-cw3.png 312x2680-4x3-cw4.png 312x2677-4x3-cw5.png 312x2674-4x3-cw6.png 2 3 argv[1]=312x2689-4x3-cw1.png argv[2]=312x2686-4x3-cw2.png argv[3]=312x2683-4x3-cw3.png argv[4]=312x2680-4x3-cw4.png argv[5]=312x2677-4x3-cw5.png argv[6]=312x2674-4x3-cw6.png
0 0(0,0) 2(0,1) 4(0,2) 1 1(1,0) 3(1,1) 5(1,2) 輸出六圖合併後的圖檔 xtile6d.jpg 成功! treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ mv xtile6d.jpg xtile6d2x3.jpg
treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ ./mtile6d 312x2689-4x3-cw1.png 312x2686-4x3-cw2.png 312x2683-4x3-cw3.png 312x2680-4x3-cw4.png 312x2677-4x3-cw5.png 312x2674-4x3-cw6.png 3 2 argv[1]=312x2689-4x3-cw1.png argv[2]=312x2686-4x3-cw2.png argv[3]=312x2683-4x3-cw3.png argv[4]=312x2680-4x3-cw4.png argv[5]=312x2677-4x3-cw5.png argv[6]=312x2674-4x3-cw6.png
0 0(0,0) 3(0,1) 1 1(1,0) 4(1,1) 2 2(2,0) 5(2,1) 輸出六圖合併後的圖檔 xtile6d.jpg 成功! treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ mv xtile6d.jpg xtile6d3x2.jpg
treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ ./mtile6d 312x2689-4x3-cw1.png 312x2686-4x3-cw2.png 312x2683-4x3-cw3.png 312x2680-4x3-cw4.png 312x2677-4x3-cw5.png 312x2674-4x3-cw6.png 6 1 argv[1]=312x2689-4x3-cw1.png argv[2]=312x2686-4x3-cw2.png argv[3]=312x2683-4x3-cw3.png argv[4]=312x2680-4x3-cw4.png argv[5]=312x2677-4x3-cw5.png argv[6]=312x2674-4x3-cw6.png
0 0(0,0) 1 1(1,0) 2 2(2,0) 3 3(3,0) 4 4(4,0) 5 5(5,0) 輸出六圖合併後的圖檔 xtile6d.jpg 成功! treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/lake$ mv xtile6d.jpg xtile6d6x1.jpg
(3)程式碼:mtile6d.c
http://lfwiki.kmvs.km.edu.tw/lf/index.php?op=ViewResource&blogId=70&resource=mtile6d.c
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <Magick++.h>
using namespace Magick; void xtile(char *argv[],int row,int col){ Image ima[6]; for (int i=0;i<6;i++){ ima[i]=Image(argv[i+1]); printf("argv[%d]=%s\n",i+1,argv[i+1]); } Geometry size = ima[0].size(); int w=size.width(); int h=size.height(); Image im(Magick::Geometry(w*col,h*row),"white"); for(int r=0;r<row;r++){ printf("\n %d\n",r); for(int c=0;c<col;c++){ int p=c*row+r; if(p<6){ im.composite(ima[p], c*w, r*h, OverCompositeOp); } printf(" %d(%d,%d)",p,r,c); } } printf("\n"); im.write("xtile6d.jpg"); printf("輸出六圖合併後的圖檔 xtile6d.jpg 成功!\n"); }
int main(int argc, char *argv[]){ if (argc!=9) { printf("圖磚合併程式的語法 ./mtile6d 1.png 2.png 3.png 4.png 5.png 6.png row col\n"); printf("輸出併圖結果檔為mtile6d.jpg\n"); exit(-1); } int row=atoi(argv[7]); int col=atoi(argv[8]); xtile(argv,row,col); }
(4)輸出圖之一: xtile6d2x1.jpg

xtile6d2x1.jpg |