处理:带圆角的图像

时间:2015-09-25 10:07:22

标签: processing

我正在绘制图像的一部分,但是我想要应用圆角。我找不到任何办法。

在draw()方法中:

img_section = img.get(gaze_x, gaze_y, gaze_size_x, gaze_size_y);
image(img_section, gaze_x, gaze_y);

2 个答案:

答案 0 :(得分:1)

您可以copy图像,然后使用set()功能手动设置角点像素。

您可以在图像周围draw a rounded rectangle - 如果图像将放置在单色背景上,只需绘制一个与图像颜色相同的圆角矩形。

或者您可以想出一个图像蒙版并在图像上绘制它。

答案 1 :(得分:0)

wilcox_test(data,
            DV ~ Group,
            paired = F,
            exact = T, 
            alternative = "two.sided",
            conf.level = 0.95,
            detailed = T)

package utils

import (
    "ddkt365-poster/library/log"
    "image"
    "image/color"
    "math"
)

// Settable Settable
type Settable interface {
    Set(x, y int, c color.Color)
}

var empty = color.RGBA{255, 255, 255, 0}

// Convert Convert
func Convert(m *image.Image, rate float64) {
    b := (*m).Bounds()
    w, h := b.Dx(), b.Dy()
    r := (float64(min(w, h)) / 2) * rate
    log.Error("bounds:%v", r)
    sm, ok := (*m).(Settable)
    if !ok {
        // Check if image is YCbCr format.
        ym, ok := (*m).(*image.YCbCr)
        if !ok {
            log.Error("errInvalidFormat")
            return
        }
        *m = yCbCrToRGBA(ym)
        sm = (*m).(Settable)
    }
    // Parallelize?
    for y := 0.0; y <= r; y++ {
        l := math.Round(r - math.Sqrt(2*y*r-y*y))
        for x := 0; x <= int(l); x++ {
            sm.Set(x-1, int(y)-1, empty)
        }
        for x := 0; x <= int(l); x++ {
            sm.Set(w-x, int(y)-1, empty)
        }
        for x := 0; x <= int(l); x++ {
            sm.Set(x-1, h-int(y), empty)
        }
        for x := 0; x <= int(l); x++ {
            sm.Set(w-x, h-int(y), empty)
        }
    }
}

func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}

func yCbCrToRGBA(m image.Image) image.Image {
    b := m.Bounds()
    nm := image.NewRGBA(b)
    for y := 0; y < b.Dy(); y++ {
        for x := 0; x < b.Dx(); x++ {
            nm.Set(x, y, m.At(x, y))
        }
    }
    return nm
}