الحصول على وتعيين قيمة رغب / رغبا من بكسل في كسبريت (كوكوس 2 د-س)

StackOverflow https://stackoverflow.com//questions/9665700

سؤال

لماذا أحتاج هذا?

في الأساس أحتاج إلى تحويل صورة ملونة إلى مقياس رمادي.بما في ذلك نسخة رمادية من الصورة يمكن أن يكون الحل ، ولكن مساحة ضيقة في وضعي-أنا لا أريد أبك أن تكون كبيرة جدا.الى جانب ذلك ، أود أن العمل على بكسل لبعض الآثار أيضا.مرة أخرى ، هذا هو جعل أبك أصغر.

لقد وجدت جيتبيكسيل سيتبيكسل من كت إكستشر 2 د و الحصول على صورة بكسل رغبا, ، ولكن أود شيئا أكثر بساطة.

أي مساعدة هي موضع تقدير.

شكرا لك!

هل كانت مفيدة؟

المحلول

هنا هو الحل بالنسبة لك :

1.أولا جعل نسخة كسيماج من الصورة الخاصة بك:

ط) من ملف :

CCImage *img=  new CCImage();
img->initWithImageFile("colors.png");

ثانيا) من العفريت :

  • ثانيا.1) كسبريت - > ريندرتكستشر 2 د

  • ثانيا-2) تقديم النص2د - > كسيماج (CCImage *testImage = RenderText2D->newCCImage();)

2.ثم يمكنك أن تفعل ما تحتاجه :

    CCImage *img= ... // make CCImage from CCSprite
    int x=3;
    if(img->hasAlpha())
        x=4;

    unsigned char *data = new unsigned char[img->getDataLen()*x];   
    data = img->getData();
    // [0][0] => Left-Top Pixel !
    // But cocos2d Location Y-axis is Bottom(0) to Top(max)

    for(int i=0;i<img->getWidth();i++)
    {
        for(int j=0;j<img->getHeight();j++)
        {
            unsigned char *pixel = data + (i + j * img->getWidth()) * x;

           // You can see/change pixels' RGBA value(0-255) here !
            unsigned char r = *pixel;
            unsigned char g = *(pixel + 1);
            unsigned char b = *(pixel + 2) ;
            unsigned char a = *(pixel + 3);
        }
    }

3.ثم قم بتحويله إلى ملمس_2د

//CCImage -> Texture2d
    texture_2D= new CCTexture2D();
    texture_2D->initWithImage(img);

4.وأخيرا العودة إلى كسبريت

CCSprite *result=  CCSprite::createWithTexture(texture_2D);

نصائح أخرى

يمكن القيام بذلك بضعة طرق.ما قمت به في الماضي هو ما يسمى SETCOLOR على Sprite إلى بعض الألوان بالقرب من ما تبحث عنه.التي عملت لأغراضي.

my_sprite.setcolor (ccc3 (128، 128، 128))؛

حل آخر (أكثر شاملة ودقيقة): كيفية تنفيذ التقديم تدرج الرمادي في OpenGL؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top