cpp

Создание изображения. Формат NYCbCrA

Создать изображение в формате NYCbCrA (цветовая модель color.NYCbCrAModel) позволяет функция NewNYCbCrA() из пакета image. Формат функции:

image.NewNYCbCrA(r image.Rectangle,
      subsampleRatio image.YCbCrSubsampleRatio) *image.NYCbCrA
type YCbCrSubsampleRatio int
(image.YCbCrSubsampleRatio).String() string

В параметре subsampleRatio можно указать следующие константы:

fmt.Printf("%d\n", image.YCbCrSubsampleRatio420) // 2
fmt.Printf("%d\n", image.YCbCrSubsampleRatio444) // 0
fmt.Printf("%d\n", image.YCbCrSubsampleRatio422) // 1
fmt.Printf("%d\n", image.YCbCrSubsampleRatio440) // 3
fmt.Printf("%d\n", image.YCbCrSubsampleRatio411) // 4
fmt.Printf("%d\n", image.YCbCrSubsampleRatio410) // 5

Пример:

r := image.Rect(0, 0, 100, 100)
img := image.NewYCbCr(r, image.YCbCrSubsampleRatio420)

Определение структуры image.NYCbCrA:

type NYCbCrA struct {
   YCbCr
   A       []uint8
   AStride int
}

Закрасим изображение полупрозрачным красным цветом:

fmt.Println(img.YStride)                  // 100
fmt.Println(img.CStride)                  // 50
fmt.Println(img.AStride)                  // 100
fmt.Println(img.SubsampleRatio)           // YCbCrSubsampleRatio420
fmt.Println(img.Rect.Dx(), img.Rect.Dy()) // 100 100
for y, my := img.Rect.Min.Y, img.Rect.Max.Y; y < my; y++ {
   for x, mx := img.Rect.Min.X, img.Rect.Max.X; x < mx; x++ {
      yi := img.YOffset(x, y)
      ci := img.COffset(x, y)
      ai := img.AOffset(x, y)
      img.Y[yi] = 76
      img.Cb[ci] = 85
      img.Cr[ci] = 255
      img.A[ai] = 128
   }
}

Структура image.NYCbCrA наследует методы из структуры image.YCbCr и содержит следующие дополнительные методы:

  • ColorModel() — возвращает цветовую модель. Формат метода:
(*image.NYCbCrA).ColorModel() color.Model

Пример:

fmt.Println(img.ColorModel() == color.NYCbCrAModel) // true
  • At() — возвращает информацию о цвете точки с указанными координатами. Формат метода:
(*image.NYCbCrA).At(x int, y int) color.Color

Пример:

fmt.Println(img.At(0, 0).RGBA()) // 32684 51 13 32896
  • RGBA64At() — возвращает информацию о цвете точки с указанными координатами. Формат метода:
(*image.NYCbCrA).RGBA64At(x int, y int) color.RGBA64

Пример:

fmt.Println(img.RGBA64At(0, 0).RGBA()) // 32684 51 13 32896
  • NYCbCrAAt() — возвращает информацию о цвете точки с указанными координатами. Формат метода:
(*image.NYCbCrA).NYCbCrAAt(x int, y int) color.NYCbCrA

Пример:

fmt.Println(img.NYCbCrAAt(0, 0).RGBA()) // 32684 51 13 32896
  • AOffset() — возвращает смещение внутри слайса из поля A для точки с указанными координатами. Формат метода:
(*image.NYCbCrA).AOffset(x int, y int) int

Пример:

fmt.Println(img.AOffset(10, 10)) // 1010
  • Opaque() — возвращает true, если изображение является полностью непрозрачным, и false — в противном случае. Формат метода:
(*image.NYCbCrA).Opaque() bool

Пример:

fmt.Println(img.Opaque()) // false
  • SubImage() — возвращает фрагмент изображения. Формат метода:
(*image.NYCbCrA).SubImage(r image.Rectangle) image.Image

Пример:

im := img.SubImage(image.Rect(0, 0, 50, 50))

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp