Bu araçlardan hiçbiri gereksinimlerimi karşılamadı, bu yüzden Mark Tylers'ın küçük resim kitaplığını kullanan bir tane yazdım, mtpixel (şimdi mtcelledit'in bir parçası ) Çok kapsamlı değil, ancak mtpixel'in aşağıdakileri içeren yerleşik işlevleriyle kolayca genişletilebilir: gri tonlama, rengi ters çevirme , döndürme, keskinleştirme, niceleme, posterleştirme, çevirme (dikey ve yatay), dönüştürme, rgb-> dizinli, dizinli-> rgb, kenar algılama, kabartma, çizim çokgenleri, metin ve daha fazlası.
Yapmanız gereken tek şey ona bir dizi görüntüyü bağımsız değişken olarak iletmektir (png, gif ve jpeg'yi destekler) ve stdout'a kullanışlı görüntü dilimleme verileriyle birlikte sprite.png adlı bir rgb png çıktılar. Tüm bir görüntü dizini spritify ve otomatik css üretimi için dilimleme verilerini çıktı olarak bash betiklerinde kullanıyorum (sonunda mevcut img etiketlerini otomatik olarak biraz yaratıcı sed / awk ile değiştirebilme umuduyla)
Yavru linux için ikili paketler burada olacak:
http://murga-linux.com/puppy/viewtopic.php?t=82009
Benim kullanım durumum sadece görüntüleri dikey olarak yeni bir png'ye eklemeyi gerektirdi, tüm yaptığı bu, ancak kaynak kodum kamuya açık ve mtcelledit kitaplığı gpl3. Mtpixel statik olarak bağlandığında, ikili <100kb'dir (dinamik olarak bağlandığında yalnızca birkaç kb'dir) ve diğer bağımlılıklar yalnızca libpng, libjpeg ve libgif'tir (ve resmi mtpiksel ile freetype, ancak metin desteğine ihtiyacım yoktu, bu yüzden statik yapıda freetype bitlerini yorumladı)
kendi ihtiyaçlarınız için değişiklik yapmaktan çekinmeyin:
#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;
}