0

I am trying to do some basic drawing with skia. Since I'm working on grayscale images I want to use the corresponding color type. The minimal Example I want to use is:

int main(int argc, char * const argv[])
{


    int width = 1000;
    int heigth = 1000;
    float linewidth = 10.0f;

    SkImageInfo info = SkImageInfo::Make(
        width,
        heigth,
        SkColorType::kAlpha_8_SkColorType,
        SkAlphaType::kPremul_SkAlphaType
        );

    SkBitmap img;
    img.allocPixels(info);
    SkCanvas canvas(img);
    canvas.drawColor(SK_ColorBLACK);

    SkPaint paint;
    paint.setColor(SK_ColorWHITE);
    paint.setAlpha(255);
    paint.setAntiAlias(false);
    paint.setStrokeWidth(linewidth);
    paint.setStyle(SkPaint::kStroke_Style);

    canvas.drawCircle(500.0f, 500.0f, 100.0f, paint);

    bool success = SkImageEncoder::EncodeFile("B:\\img.png", img,
        SkImageEncoder::kPNG_Type, 100);

    return 0;
}

But the saved image does not contain the circle that was drawn. If I replace kAlpha_8_SkColorType with kN32_SkColorType I get the expected result. How can I draw the circle onto a 8 bit grayscale image? I'm working with Visual Studio 2013 on a 64bit Windows machine.

kN32_SkColorType type result kAlpha_8_SkColorType result

DanielK
  • 11
  • 3

1 Answers1

0

You should use kGray_8_SkColorType than kAlpha_8_SkColorType. The kAlpha_8_SkColorType used for bitmap mask.

jhlee.8804
  • 631
  • 6
  • 7