이러한 도구 중 어느 것도 내 요구 사항을 충족 하지 못했기 때문에 Mark Tylers의 작은 이미지 라이브러리 인 mtpixel (현재 mtcelledit의 일부 ) 을 사용하는 도구를 작성 했습니다. 매우 광범위하지는 않지만 mtpixel의 내장 기능을 통해 쉽게 확장 할 수 있습니다. , 회전, 선명하게, 양자화, 포스터 화, 뒤집기 (수직 및 수평), 변환, RGB-> 색인, 색인-> rgb, 가장자리 감지, 엠 보스, 다각형 그리기, 텍스트 등.
이미지 세트를 args (png, gif 및 jpeg 지원)로 전달하면 유용한 이미지 슬라이싱 데이터와 함께 sprite.png라는 rgb png를 stdout에 출력합니다. 나는 bash 스크립트에서 그것을 사용하여 이미지의 전체 디렉토리를 spritify하고 CSS 자동 생성을 위해 슬라이싱 데이터를 출력합니다 (결국 기존 img 태그를 약간의 독창적 인 sed / awk로 자동으로 대체 할 수 있기를 희망 함)
강아지 리눅스 용 바이너리 패키지는 다음과 같습니다.
http://murga-linux.com/puppy/viewtopic.php?t=82009
내 유스 케이스는 이미지를 새 png에 세로로 스 플라이 싱하기 만하면되었으므로 소스 코드는 퍼블릭 도메인이고 mtcelledit 라이브러리는 gpl3입니다. mtpixel가 정적으로 링크 된 상태에서 이진 파일은 <100kb (동적으로 링크 된 경우 몇 kb 만)이고 다른 유일한 종속성은 libpng, libjpeg 및 libgif (공식 mtpixel을 사용한 프리 타입)이지만 텍스트 지원이 필요하지 않습니다. 정적 빌드에서 프리 타입 비트를 주석 처리했습니다)
자신의 필요에 따라 자유롭게 수정하십시오.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <mtpixel.h>
int main( int argc, char *argv[] ){
int i=0,height=0,width=0,y=0;
mtpixel_init();
mtImage *imglist[argc];
argc--;
do{ imglist[i] = mtpixel_image_load( argv[i+1] );
height+=imglist[i]->height;
if (imglist[i]->width > width) width=imglist[i]->width;
} while (++i < argc);
imglist[argc]=mtpixel_image_new_rgb(width,height);
imglist[argc]->palette.trans=0;
i=0;
do{ if (imglist[i]->type == MTPIXEL_IMAGE_INDEXED)
mtpixel_image_paste(imglist[argc],mtpixel_image_to_rgb(imglist[i]),mtpixel_brush_new(),0 ,y);
else mtpixel_image_paste(imglist[argc],imglist[i],mtpixel_brush_new(),0 ,y);
printf("name=%s;width=%d;height=%d;y_offset=%d\n",argv[i+1],imglist[i]->height,imglist[i]->width,y);
y+=imglist[i]->height;
mtpixel_image_destroy( imglist[i] );
}while (++i < argc);
mtpixel_image_save( imglist[argc], "sprite.png", MTPIXEL_FILE_TYPE_PNG, 5 );
mtpixel_quit();
return 0;
}