88 / 103

Exercise: Images

Mashq: rasmlar

Oldin yozgan rasm generatoringiz esingizdami? Keling, yana bittasini yozamiz, lekin bu safar u ma'lumotlar slice'i o'rniga image.Image amalga oshirilishini qaytaradi.

Topshiriqlar

Yechimni kodning pastki qismidagi Topshiriqlar bo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.

1-topshiriq

O'zingizning Image tipingizni belgilang, kerakli metodlarni amalga oshiring va rasmni chiqaring.

Bounds image.Rect(0, 0, w, h) kabi image.Rectangle qaytarishi kerak.

ColorModel color.RGBAModel qaytarishi kerak.

At rangni qaytarishi kerak; oxirgi rasm generatoridagi v qiymati bu yerda color.RGBA{v, v, 255, 255} ga mos keladi.

Izoh: asl sayohatda rasm pic.ShowImage bilan grafik ko'rinishda chiqariladi. Bu yerda main uni belgilar bilan chiqaradi: piksel qizil kanalining qiymati qanchalik katta bo'lsa, belgi shunchalik "to'q" bo'ladi.

Aniqlik uchun quyidagicha bajaring: Bounds() — image.Rect(0, 0, 64, 64); ColorModel() — color.RGBAModel; At(x, y) — v := uint8((x + y) / 2) uchun color.RGBA{v, v, 255, 255}. (image/color paketini import qiling.) Testlar shularni tekshiradi.

2-topshiriq

Piksellar(m image.Image) int funksiyasini yozing: rasmdagi piksellar sonini (eni * bo'yi) qaytarsin. Masalan, Piksellar(image.NewRGBA(image.Rect(0, 0, 8, 5))) — 40.