Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Создание изображения. Формат YCbCr
Создать изображение в формате YCbCr
(цветовая модель color.YCbCrModel
) позволяет функция NewYCbCr()
из пакета image
. Формат функции:
image.NewYCbCr(r image.Rectangle,
subsampleRatio image.YCbCrSubsampleRatio) *image.YCbCr
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.YCbCr
:
type YCbCr struct {
Y, Cb, Cr []uint8
YStride int
CStride int
SubsampleRatio YCbCrSubsampleRatio
Rect Rectangle
}
Закрасим изображение красным цветом:
fmt.Println(img.YStride) // 100
fmt.Println(img.CStride) // 50
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)
img.Y[yi] = 76
img.Cb[ci] = 85
img.Cr[ci] = 255
}
}
Структура image.YCbCr
содержит следующие методы:
ColorModel()
— возвращает цветовую модель. Формат метода:
(*image.YCbCr).ColorModel() color.Model
Пример:
fmt.Println(img.ColorModel() == color.YCbCrModel) // true
Bounds()
— возвращает координаты прямоугольной области. Формат метода:
(*image.YCbCr).Bounds() image.Rectangle
Пример:
fmt.Println(img.Bounds()) // (0,0)-(100,100)
At()
— возвращает информацию о цвете точки с указанными координатами. Формат метода:
(*image.YCbCr).At(x int, y int) color.Color
Пример:
fmt.Println(img.At(0, 0).RGBA()) // 65113 102 26 65535
RGBA64At()
— возвращает информацию о цвете точки с указанными координатами. Формат метода:
(*image.YCbCr).RGBA64At(x int, y int) color.RGBA64
Пример:
fmt.Println(img.RGBA64At(0, 0).RGBA()) // 65113 102 26 65535
YCbCrAt()
— возвращает информацию о цвете точки с указанными координатами. Формат метода:
(*image.YCbCr).YCbCrAt(x int, y int) color.YCbCr
Пример:
fmt.Println(img.YCbCrAt(0, 0).RGBA()) // 65113 102 26 65535
YOffset()
— возвращает смещение внутри слайса из поляY
для точки с указанными координатами. Формат метода:
(*image.YCbCr).YOffset(x int, y int) int
Пример:
fmt.Println(img.YOffset(10, 10)) // 1010
COffset()
— возвращает смещение внутри слайсов из полейCb
иCr
для точки с указанными координатами. Формат метода:
(*image.YCbCr).COffset(x int, y int) int
Пример:
fmt.Println(img.COffset(10, 10)) // 255
Opaque()
— возвращаетtrue
, если изображение является полностью непрозрачным, иfalse
— в противном случае. Формат метода:
(*image.YCbCr).Opaque() bool
Пример:
fmt.Println(img.Opaque()) // true
SubImage()
— возвращает фрагмент изображения. Формат метода:
(*image.YCbCr).SubImage(r image.Rectangle) image.Image
Пример:
im := img.SubImage(image.Rect(0, 0, 50, 50))
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов