এই সরঞ্জামগুলির মধ্যে কোনওটিই আমার প্রয়োজনীয়তা পূরণ করেনি, তাই আমি একটি লিখেছিলাম যা মার্ক টাইলারের ক্ষুদ্র চিত্র গ্রন্থাগার, এমটিপিক্সেল (এখন এমটিসেল্লেডের অংশ) ব্যবহার করে ) এটি বিস্তৃত নয় তবে এটি এমটিপিক্সেলের বিল্ট ফাংশনগুলির মধ্যে সহজেই বর্ধনযোগ্য যা এইগুলি অন্তর্ভুক্ত করে: গ্রেস্কেল, রঙ বিপরীত , ঘূর্ণন, তীক্ষ্ণ, কোয়ান্টিজ, পোস্টেরাইজ, ফ্লিপ (উল্লম্ব এবং অনুভূমিক), রূপান্তর, rgb-> সূচী, সূচী-> আরজিবি, প্রান্ত সনাক্তকরণ, এম্বোস, অঙ্কন বহুভুজ, পাঠ্য এবং আরও অনেক কিছু।
আপনি যা করেন তা এগ্রোগ হিসাবে একটি চিত্রের সেট (পিএনজি, জিআইএফ এবং জেপিগ সমর্থন করে) এবং এটি স্ট্রেডআউটে দরকারী ইমেজ স্লাইসিং ডেটা সহ স্প্রেট.পিএনজি নামক একটি আরজিবি পিএনজি আউটপুট দেয়। আমি এটি ব্যাশের স্ক্রিপ্টগুলিতে ইমেজগুলির একটি সম্পূর্ণ ডিরেক্টরি স্প্রেটিফ করতে ব্যবহার করি এবং সিএসএসের স্বয়ংক্রিয় প্রজন্মের জন্য স্লাইসিং ডেটা আউটপুট করে (শেষ পর্যন্ত এটিকে কিছুটা ক্রিয়েটিভ সেড / অ্যাজকের সাথে স্বয়ংক্রিয়ভাবে বিদ্যমান ইমগ ট্যাগগুলি প্রতিস্থাপন করতে সক্ষম করে তোলে)
কুকুরছানা লিনাক্সের জন্য বাইনারি প্যাকেজগুলি এখানে থাকবে:
http://murga-linux.com/puppy/viewtopic.php?t=82009
আমার ব্যবহারের ক্ষেত্রে চিত্রগুলি উল্লম্বভাবে একটি নতুন পিএনজিতে বিভক্ত করা প্রয়োজন, যাতে এটি হয় তবে আমার উত্স কোডটি পাবলিক ডোমেন এবং mtcelledit লাইব্রেরি gpl3। এমটিপিক্সেল স্ট্যাটিকালি লিঙ্কযুক্ত, বাইনারিটি <100 কিলোবাইট (ডায়নামিকভাবে সংযুক্ত থাকাকালীন কয়েক কিলোবাইট) এবং কেবলমাত্র অন্যান্য নির্ভরতাগুলি হ'ল লিবিপং, লিবজেপেইগ এবং লিবিজিফ (এবং অফিসিয়াল এমটিপিক্সেলের সাথে ফ্রিটাইপ, তবে আমার পাঠ্য সমর্থনটির প্রয়োজন নেই, তাই আমি স্ট্যাটিক বিল্ডে ফ্রিটাইপ বিটগুলি মন্তব্য করেছে)
আপনার নিজের প্রয়োজনের জন্য নির্দ্বিধায় নির্দ্বিধায়:
#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;
}