इन उपकरणों में से कोई भी मेरी आवश्यकताओं को पूरा नहीं करता था, इसलिए मैंने एक लिखा जो मार्क टायलर की छोटी छवि पुस्तकालय, mtpixel (अब mtcelledit का हिस्सा ) का उपयोग करता है यह सुपर व्यापक नहीं है, लेकिन यह आसानी से mtpixel द्वारा निर्मित कार्यों में शामिल है, जिसमें शामिल हैं: ग्रेस्केल, रंग व्युत्क्रम , रोटेशन, पैनापन, बढ़ाएँ, पोस्टराइज़, फ्लिप (ऊर्ध्वाधर और क्षैतिज), रूपांतर, आरजीबी- अनुक्रमित, अनुक्रमित-> आरजीबी, एज डिटेक्शन, एम्बॉस, ड्राइंग बहुभुज, पाठ और अधिक।
आप सभी इसे आर्ग्स (png, gif और jpeg का समर्थन करते हुए) के रूप में छवियों का एक सेट पास करते हैं और यह एक rgb png आउटपुट करेगा, जिसे sprite.png कहा जाता है। मैं इसका उपयोग बैश स्क्रिप्ट में छवियों की एक पूरी निर्देशिका को फैलाने और सीएसएस के स्वचालित पीढ़ी के लिए स्लाइसिंग डेटा को आउटपुट करने के लिए करता हूं (अंततः आशा के साथ यह मौजूदा img टैग को स्वचालित रूप से थोड़ी सी रचनात्मक sed / awk के साथ बदलने में सक्षम बनाता है)
पिल्ला लिनक्स के लिए बाइनरी पैकेज यहां होंगे:
http://murga-linux.com/puppy/viewtopic.php?t=82009
मेरे उपयोग के मामले में केवल छवियों को एक नए png में लंबित करने की आवश्यकता होती है, इसलिए यह सब होता है, लेकिन मेरा स्रोत कोड सार्वजनिक डोमेन है और mtcelledit लाइब्रेरी gpl3 है। Mtpixel स्टैटिकली लिंक के साथ, बाइनरी है <100kb (केवल कुछ kb जब डायनेमिकली लिंक्ड है) और केवल अन्य निर्भरता libpng, libjpeg और libgif हैं (और आधिकारिक mtpixel के साथ freetype हैं, लेकिन मुझे टेक्स्ट सपोर्ट की आवश्यकता नहीं है, इसलिए मुझे इसकी आवश्यकता नहीं है) स्थैतिक निर्माण में freetype बिट्स पर टिप्पणी की)
अपनी आवश्यकताओं के लिए संशोधित करने के लिए स्वतंत्र महसूस करें:
#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;
}