本文整理汇总了Golang中github.com/disintegration/imaging.Fit函数的典型用法代码示例。如果您正苦于以下问题:Golang Fit函数的具体用法?Golang Fit怎么用?Golang Fit使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Fit函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ProcessPhoto
func ProcessPhoto(photo *Photo) error {
origImg, err := imaging.Open(GetPhotoPath(photo, "o"))
if err != nil {
return err
}
src := imaging.Clone(origImg)
for _, sz := range PhotoSizes {
var dst image.Image
switch sz.Type {
case "thumbnail":
dst = imaging.Thumbnail(src, sz.Width, sz.Height, imaging.Lanczos)
case "fit":
dst = imaging.Fit(src, sz.Width, sz.Height, imaging.Lanczos)
}
err := imaging.Save(dst, GetPhotoPath(photo, sz.Suffix))
if err != nil {
return err
}
}
return nil
}
示例2: ProcessAvatar
func ProcessAvatar(user *User) error {
origImg, err := imaging.Open(GetAvatarPath(user, "o"))
if err != nil {
return err
}
src := imaging.Clone(origImg)
for _, sz := range AvatarSizes {
var dst image.Image
switch sz.Type {
case "thumbnail":
dst = imaging.Thumbnail(src, sz.Width, sz.Height, imaging.Lanczos)
case "fit":
dst = imaging.Fit(src, sz.Width, sz.Height, imaging.Lanczos)
}
err := imaging.Save(dst, GetAvatarPath(user, sz.Suffix))
if err != nil {
return err
}
}
return nil
}
示例3: Resize
func (api *Api) Resize(imgloc string, xsize, ysize int, resizeType string) bool {
dest := setSize(imgloc, xsize, ysize)
if _, err := os.Stat(dest); err == nil {
return true
}
bts, err := ioutil.ReadFile(imgloc)
if err != nil {
fmt.Println(err)
return false
}
rdr := bytes.NewReader(bts)
i, _, err := image.Decode(rdr)
if err != nil {
fmt.Println(err)
return false
}
var fsimg *image.NRGBA
switch resizeType {
case "fit":
fsimg = imaging.Fit(i, xsize, ysize, imaging.Lanczos)
case "thumb":
fsimg = imaging.Thumbnail(i, xsize, ysize, imaging.Lanczos)
default:
fsimg = imaging.Resize(i, xsize, ysize, imaging.Lanczos)
}
out, err := os.Create(dest)
if err != nil {
return false
}
defer out.Close()
jpeg.Encode(out, fsimg, nil)
return true
}
示例4: processImage
func (h *ImgHandler) processImage(in io.Reader, out io.Writer, mode string, width int, height int) error {
if Config.Image.UseGoRoutine {
ImageChannel <- 1
defer func() {
<-ImageChannel
}()
}
img, _, err := image.Decode(in)
if err != nil {
glog.Fatal(err)
return err
}
var m *image.NRGBA
switch mode {
case "z":
m = imaging.Fit(img, width, height, imaging.Lanczos)
case "x":
m = imaging.Fill(img, width, height, imaging.Center, imaging.Lanczos)
}
jpeg.Encode(out, m, &jpeg.Options{Config.Image.ReadQuality})
return nil
}
示例5: ExtractCover
// Extracts cover
func (c *Convertor) ExtractCover(file string, info os.FileInfo) {
c.CurrFile += 1
cover, err := c.GetCoverImage(file, info)
if err != nil {
fmt.Fprintf(os.Stderr, "Error GetCoverImage: %v\n", err.Error())
return
}
if c.Opts.Width > 0 || c.Opts.Height > 0 {
if c.Opts.Fit {
cover = imaging.Fit(cover, c.Opts.Width, c.Opts.Height, filters[c.Opts.Filter])
} else {
cover = imaging.Resize(cover, c.Opts.Width, c.Opts.Height, filters[c.Opts.Filter])
}
}
filename := filepath.Join(c.Opts.Outdir, fmt.Sprintf("%s.jpg", c.getBasename(file)))
f, err := os.Create(filename)
if err != nil {
fmt.Fprintf(os.Stderr, "Error Create: %v\n", err.Error())
return
}
defer f.Close()
jpeg.Encode(f, cover, &jpeg.Options{c.Opts.Quality})
}
示例6: transformImage
// transformImage modifies the image m based on the transformations specified
// in opt.
func transformImage(m image.Image, opt Options) image.Image {
// resize if needed
if w, h, resize := resizeParams(m, opt); resize {
if opt.Fit {
m = imaging.Fit(m, w, h, resampleFilter)
} else {
if w == 0 || h == 0 {
m = imaging.Resize(m, w, h, resampleFilter)
} else {
m = imaging.Thumbnail(m, w, h, resampleFilter)
}
}
}
// flip
if opt.FlipVertical {
m = imaging.FlipV(m)
}
if opt.FlipHorizontal {
m = imaging.FlipH(m)
}
// rotate
switch opt.Rotate {
case 90:
m = imaging.Rotate90(m)
case 180:
m = imaging.Rotate180(m)
case 270:
m = imaging.Rotate270(m)
}
return m
}
示例7: ExtractThumbnail
// Extracts thumbnail
func (c *Convertor) ExtractThumbnail(file string, info os.FileInfo) {
c.CurrFile += 1
cover, err := c.GetCoverImage(file, info)
if err != nil {
fmt.Fprintf(os.Stderr, "Error GetCoverImage: %v\n", err.Error())
return
}
if err != nil {
fmt.Fprintf(os.Stderr, "Error Thumbnail: %v\n", err.Error())
return
}
if c.Opts.Width > 0 || c.Opts.Height > 0 {
if c.Opts.Fit {
cover = imaging.Fit(cover, c.Opts.Width, c.Opts.Height, filters[c.Opts.Filter])
} else {
cover = imaging.Resize(cover, c.Opts.Width, c.Opts.Height, filters[c.Opts.Filter])
}
} else {
cover = imaging.Resize(cover, 256, 0, filters[c.Opts.Filter])
}
imagick.Initialize()
mw := imagick.NewMagickWand()
defer mw.Destroy()
b := new(bytes.Buffer)
png.Encode(b, cover)
err = mw.ReadImageBlob(b.Bytes())
if err != nil {
fmt.Fprintf(os.Stderr, "Error ReadImageBlob: %v\n", err.Error())
}
var fileuri string
var filename string
if c.Opts.Outfile == "" {
fileuri = "file://" + file
filename = filepath.Join(c.Opts.Outdir, fmt.Sprintf("%x.png", md5.Sum([]byte(fileuri))))
} else {
abs, _ := filepath.Abs(c.Opts.Outfile)
fileuri = "file://" + abs
filename = abs
}
mw.SetImageFormat("PNG")
mw.SetImageProperty("Software", "CBconvert")
mw.SetImageProperty("Description", "Thumbnail of "+fileuri)
mw.SetImageProperty("Thumb::URI", fileuri)
mw.SetImageProperty("Thumb::MTime", strconv.FormatInt(info.ModTime().Unix(), 10))
mw.SetImageProperty("Thumb::Size", strconv.FormatInt(info.Size(), 10))
mw.SetImageProperty("Thumb::Mimetype", mime.TypeByExtension(filepath.Ext(file)))
mw.WriteImage(filename)
}
示例8: resizeEmoji
func resizeEmoji(img image.Image, width int, height int) image.Image {
emojiWidth := float64(width)
emojiHeight := float64(height)
var emoji image.Image
if emojiHeight <= MaxEmojiHeight && emojiWidth <= MaxEmojiWidth {
emoji = img
} else {
emoji = imaging.Fit(img, MaxEmojiWidth, MaxEmojiHeight, imaging.Lanczos)
}
return emoji
}
示例9: MakeFromImage
func MakeFromImage(srcImage image.Image, t string, w, h int) (image *image.NRGBA, err error) {
switch t {
case "thumbnail":
image = imaging.Thumbnail(srcImage, w, h, imaging.Lanczos)
case "resize":
image = imaging.Resize(srcImage, w, h, imaging.Lanczos)
case "fit":
image = imaging.Fit(srcImage, w, h, imaging.Lanczos)
default:
image = imaging.Thumbnail(srcImage, w, h, imaging.Lanczos)
}
return image, nil
}
示例10: getImage
func getImage(filename string, small bool) (io.ReadCloser, error) {
if !small {
return os.Open(filename)
}
fullImage, err := imaging.Open(filename)
if err != nil {
return nil, err
}
resized := imaging.Fit(fullImage, config.SmallRes, config.SmallRes, imaging.Linear)
r, w := io.Pipe()
go imaging.Encode(w, resized, imaging.JPEG)
return r, nil
}
示例11: MakeFromReader
func MakeFromReader(reader io.Reader, t string, w, h int) (image *image.NRGBA, err error) {
srcImage, err := Open(reader)
if err != nil {
return nil, err
}
switch t {
case "thumbnail":
image = imaging.Thumbnail(srcImage, w, h, imaging.Lanczos)
case "resize":
image = imaging.Resize(srcImage, w, h, imaging.Lanczos)
case "fit":
image = imaging.Fit(srcImage, w, h, imaging.Lanczos)
default:
image = imaging.Thumbnail(srcImage, w, h, imaging.Lanczos)
}
return
}
示例12: TransformImage
// Transforms image (resize, rotate, flip, brightness, contrast)
func (c *Convertor) TransformImage(img image.Image) image.Image {
var i image.Image = img
if c.Opts.Width > 0 || c.Opts.Height > 0 {
if c.Opts.Fit {
i = imaging.Fit(i, c.Opts.Width, c.Opts.Height, filters[c.Opts.Filter])
} else {
i = imaging.Resize(i, c.Opts.Width, c.Opts.Height, filters[c.Opts.Filter])
}
}
if c.Opts.Rotate > 0 {
switch c.Opts.Rotate {
case 90:
i = imaging.Rotate90(i)
case 180:
i = imaging.Rotate180(i)
case 270:
i = imaging.Rotate270(i)
}
}
if c.Opts.Flip != "none" {
switch c.Opts.Flip {
case "horizontal":
i = imaging.FlipH(i)
case "vertical":
i = imaging.FlipV(i)
}
}
if c.Opts.Brightness != 0 {
i = imaging.AdjustBrightness(i, c.Opts.Brightness)
}
if c.Opts.Contrast != 0 {
i = imaging.AdjustContrast(i, c.Opts.Contrast)
}
return i
}
示例13: CreatePhotos
// Create HD and Thumbs Photos
func CreatePhotos(a *model.Album, p *model.Photo) (err error) {
src, err := imaging.Open(a.PathSource() + p.OriginalName)
if err != nil {
return err
}
var dst *image.NRGBA
filename := a.PathHD() + p.Filename
log.Printf("Saving HD: %s\n", filename)
dst = imaging.Fit(src, cfg.Image.MaxWidth, cfg.Image.MaxHeight, imaging.Lanczos)
size, err := rewriteImage(dst, filename)
if err != nil {
return err
}
p.FileSizeHD = size
filename = a.PathThumbs() + p.Filename
log.Printf("Saving Thumb: %s\n", filename)
dst = imaging.Thumbnail(dst, cfg.Image.ThumbWidth, cfg.Image.ThumbHeight, imaging.CatmullRom) // resize and crop the image to make a 200x200 thumbnail
_, err = rewriteImage(dst, filename)
return err
}
示例14: do_params
func do_params(ctx *context, ctrl *ext.Controller) bool {
qr := ctrl.Request.Param("qrcode")
if qr != "" {
if size, err := strconv.ParseInt(qr, 10, 64); err == nil {
return do_qrcode(ctx, ctrl, int(size))
}
}
resize := ctrl.Request.Param("resize")
if resize != "" {
fn := path.Join(ctx.app.Options.StaticRoot, "resize", util.ResizeKey(ctrl.Request.URI(), resize))
if util.Exist(fn) {
ctrl.File(fn)
return true
}
if rect, err := util.ParseRect(resize, "x"); err == nil {
f1 := path.Join(ctx.app.Options.StaticRoot, ctrl.Request.URI())
ctx.Info("f1 :%s", f1)
if src, err := imaging.Open(f1); err == nil {
dst := imaging.Resize(src, rect.Width, rect.Height, imaging.Lanczos)
if err := imaging.Save(dst, fn); err == nil {
ctrl.File(fn)
return true
}
}
}
}
fit := ctrl.Request.Param("fit")
if fit != "" {
fn := path.Join(ctx.app.Options.StaticRoot, "fit", util.ResizeKey(ctrl.Request.URI(), resize))
if util.Exist(fn) {
ctrl.File(fn)
return true
}
if rect, err := util.ParseRect(resize, "x"); err == nil {
f1 := path.Join(ctx.app.Options.StaticRoot, ctrl.Request.URI())
if src, err := imaging.Open(f1); err == nil {
dst := imaging.Fit(src, rect.Width, rect.Height, imaging.Lanczos)
if err := imaging.Save(dst, fn); err == nil {
ctrl.File(fn)
return true
}
}
}
}
thumbnail := ctrl.Request.Param("thumbnail")
if thumbnail != "" {
fn := path.Join(ctx.app.Options.StaticRoot, "thumbnail", util.ResizeKey(ctrl.Request.URI(), resize))
if util.Exist(fn) {
ctrl.File(fn)
return true
}
if rect, err := util.ParseRect(thumbnail, "x"); err == nil {
f1 := path.Join(ctx.app.Options.StaticRoot, ctrl.Request.URI())
if src, err := imaging.Open(f1); err == nil {
dst := imaging.Thumbnail(src, rect.Width, rect.Height, imaging.Lanczos)
if err := imaging.Save(dst, fn); err == nil {
ctrl.File(fn)
return true
}
}
}
}
return false
}
示例15: downloadWriteKey
func (p *program) downloadWriteKey(key string, w http.ResponseWriter) error {
bl, found := downloadMapper[key]
if !found {
http.Error(w, "Not found", 404)
return nil
}
w.Header().Set("Content-Disposition", `attachment; filename="photos.tar"`)
tw := tar.NewWriter(w)
result := &bytes.Buffer{}
for _, item := range bl.list {
filename := filepath.Join(config.FileRoot, bl.folder, item)
fi, err := os.Stat(filename)
if err != nil {
return err
}
if !bl.small {
header, err := tar.FileInfoHeader(fi, "")
if err != nil {
return err
}
err = tw.WriteHeader(header)
if err != nil {
return err
}
f, err := os.Open(filename)
if err != nil {
return err
}
_, err = io.Copy(tw, f)
f.Close()
if err != nil {
return err
}
} else {
fullImage, err := imaging.Open(filename)
if err != nil {
return err
}
resized := imaging.Fit(fullImage, config.SmallRes, config.SmallRes, imaging.Linear)
err = imaging.Encode(result, resized, imaging.JPEG)
if err != nil {
return err
}
header := &tar.Header{
Name: item,
Size: int64(result.Len()),
Mode: 0666,
ModTime: fi.ModTime(),
}
err = tw.WriteHeader(header)
if err != nil {
return err
}
_, err = io.Copy(tw, result)
if err != nil {
return err
}
result.Reset()
}
}
return tw.Close()
}