Documentation ¶
Index ¶
- Variables
- func ColoredImageDataURL(c color.Color) string
- func ImageDataURL(imageURL string) (dataURL string, err error)
- func ImagesAdmin() view.View
- func MakePrettyUrlFilename(filename string) string
- func ResampleImage(m image.Image, r image.Rectangle, w, h int) image.Image
- func UploadImageButton(thumbnailSize int, onComplete string) view.View
- func ViewPath(name string) view.ViewPath
- type Backend
- type Configuration
- type ErrInvalidImageID
- type FormFieldFactory
- type HorAlignment
- type Image
- func (self *Image) AspectRatio() float64
- func (self *Image) ContentType() string
- func (self *Image) Delete() error
- func (self *Image) DeleteVersion(index int) error
- func (self *Image) Filename() string
- func (self *Image) Grayscale() bool
- func (self *Image) Height() int
- func (self *Image) Init()
- func (self *Image) Rectangle() image.Rectangle
- func (self *Image) Save() error
- func (self *Image) Thumbnail(size int) (im *ImageVersion, err error)
- func (self *Image) TitleOrFilename() string
- func (self *Image) URL() view.URL
- func (self *Image) Version(width, height int, horAlign HorAlignment, verAlign VerAlignment, ...) (im *ImageVersion, err error)
- func (self *Image) VersionCentered(width, height int, grayscale bool) (im *ImageVersion, err error)
- func (self *Image) VersionSourceRect(sourceRect image.Rectangle, width, height int, grayscale bool, ...) (im *ImageVersion, err error)
- func (self *Image) VersionTouchOrigFromOutside(width, height int, horAlign HorAlignment, verAlign VerAlignment, ...) (im *ImageVersion, err error)
- func (self *Image) VersionTouchOrigFromOutsideCentered(width, height int, grayscale bool, outsideColor color.Color) (im *ImageVersion, err error)
- func (self *Image) Width() int
- type ImageRef
- func (self *ImageRef) GetImage() (*Image, error)
- func (self *ImageRef) IsEmpty() bool
- func (self *ImageRef) Required(metaData *model.MetaData) bool
- func (self *ImageRef) SetImage(image *Image)
- func (self *ImageRef) SetString(str string) error
- func (self *ImageRef) String() string
- func (self *ImageRef) Validate(metaData *model.MetaData) error
- type ImageRefEditorConfiguration
- type ImageVersion
- func (self *ImageVersion) AspectRatio() float64
- func (self *ImageVersion) LoadImage() (image.Image, error)
- func (self *ImageVersion) SaveImage(im image.Image) error
- func (self *ImageVersion) SaveImageData(data []byte) error
- func (self *ImageVersion) URL() view.URL
- func (self *ImageVersion) ViewImage(class string) *view.Image
- func (self *ImageVersion) ViewImageLink(imageClass, linkClass string) *view.Link
- type ImagesAdminConfiguration
- type ModelRect
- type VerAlignment
Constants ¶
This section is empty.
Variables ¶
var Config = Configuration{ DummyImageColor: "#a8a8a8", ImagesAdmin: ImagesAdminConfiguration{ ImageEditorClass: "media-image-editor", ThumbnailSize: 150, ThumbnailFrameClass: "thumbnail-frame", ActionsClass: "actions", }, ImageRefEditor: ImageRefEditorConfiguration{ Class: "media-imageref-editor", ThumbnailSize: 50, ThumbnailFrameClass: "thumbnail-frame", ActionsClass: "actions", }, }
var ImageView = view.NewViewURLWrapper(view.RenderView( func(ctx *view.Context) error { reader, contentType, err := Config.Backend.ImageVersionReader(ctx.URLArgs[0]) if err != nil { if _, ok := err.(ErrInvalidImageID); ok { return view.NotFound(ctx.URLArgs[0] + "/" + ctx.URLArgs[1] + " not found") } return err } _, err = io.Copy(ctx.Response, reader) if err != nil { return err } err = reader.Close() if err != nil { return err } ctx.Response.Header().Set("Content-Type", contentType) return nil }, ))
var UploadImage = view.NewViewURLWrapper(view.RenderViewBindURLArgs( func(ctx *view.Context, thumbnailSize int) error { formatError := func(err error) error { return fmt.Errorf(`{success: false, error: "%s"}`, err.Error()) } filename := ctx.Request.Header.Get("X-File-Name") var r io.ReadCloser if filename != "" { r = ctx.Request.Body } else { f, h, err := ctx.Request.FormFile("qqfile") if err != nil { return formatError(err) } filename = h.Filename r = f } defer r.Close() b, err := ioutil.ReadAll(r) if err != nil { return formatError(err) } i, err := NewImage(filename, b) if err != nil { return formatError(err) } v, err := i.Thumbnail(thumbnailSize) if err != nil { return formatError(err) } ctx.Response.Printf(`{success: true, imageID: "%s", thumbnailURL: "%s", thumbnailSize: %d}`, i.ID, v.URL().URL(ctx), thumbnailSize) return nil }, ))
Functions ¶
func ColoredImageDataURL ¶
ColoredImageDataURL creates a 1 pixel image with the given color and encodes it as data URL.
func ImageDataURL ¶
ImageDataURL downloads an image and encodes it as a data URL.
func ImagesAdmin ¶
func MakePrettyUrlFilename ¶
MakePrettyUrlFilename modifies a filename so it looks good as part on an URL.
func ResampleImage ¶
Resample returns a resampled copy of the image slice r of m. The returned image has width w and height h.
func UploadImageButton ¶
Types ¶
type Backend ¶
type Backend interface { LoadImage(id string) (*Image, error) // SaveImage saves image and updates its ID if it is empty. SaveImage(image *Image) error DeleteImage(image *Image) error DeleteImageVersion(id string) error // ImageVersionReader returns an io.ReadCloser to read the image-data // with the given id from the backend. // If there is no image with the given id, // an error of type ErrInvalidImageID will be returned. ImageVersionReader(id string) (reader io.ReadCloser, ctype string, err error) // ImageVersionWriter returns an io.WriteCloser to write the image-data // to the backend. version.ID can be empty for a new image or the id // of an existing image. version.ID can be changed by the function call // regardless of the former value ImageVersionWriter(version *ImageVersion) (writer io.WriteCloser, err error) ImageIterator() model.Iterator }
type Configuration ¶
type Configuration struct { Backend Backend NoDynamicStyleAndScript bool DummyImageColor string // web color ImagesAdmin ImagesAdminConfiguration ImageRefEditor ImageRefEditorConfiguration // contains filtered or unexported fields }
func (*Configuration) Close ¶
func (self *Configuration) Close() error
func (*Configuration) Init ¶
func (self *Configuration) Init() error
func (*Configuration) Name ¶
func (self *Configuration) Name() string
type ErrInvalidImageID ¶
type ErrInvalidImageID string
func (ErrInvalidImageID) Error ¶
func (self ErrInvalidImageID) Error() string
type FormFieldFactory ¶
type FormFieldFactory struct {
view.FormFieldFactoryWrapper
}
func NewFormFieldFactory ¶
func NewFormFieldFactory(wrapped view.FormFieldFactory, imageWidgetClass string, thumbnailsize int) *FormFieldFactory
func (*FormFieldFactory) CanCreateInput ¶
type Image ¶
type Image struct { ID model.String `bson:",omitempty"` Title model.String Link model.Url Versions []ImageVersion }
func NewImage ¶
NewImage creates a new Image and saves the original version to Config.Backend. GIF, TIFF, BMP images will be read, but saved as PNG.
func NewImageFromReader ¶
NewImageFromReader creates a new Image and saves the original version to Config.Backend. GIF, TIFF, BMP images will be read, but saved as PNG.
func NewImageFromURL ¶
NewImageFromURL creates a new Image by downloading it from url. GIF, TIFF, BMP images will be read, but saved as PNG.
func (*Image) AspectRatio ¶
AspectRatio returns Width / Height
func (*Image) ContentType ¶
func (*Image) DeleteVersion ¶
func (*Image) TitleOrFilename ¶
TitleOrFilename returns Title if not empty, or else Filename().
func (*Image) Version ¶
func (self *Image) Version(width, height int, horAlign HorAlignment, verAlign VerAlignment, grayscale bool) (im *ImageVersion, err error)
func (*Image) VersionCentered ¶
func (self *Image) VersionCentered(width, height int, grayscale bool) (im *ImageVersion, err error)
func (*Image) VersionSourceRect ¶
func (self *Image) VersionSourceRect(sourceRect image.Rectangle, width, height int, grayscale bool, outsideColor color.Color) (im *ImageVersion, err error)
SourceRectVersion searches and returns an existing matching version, or a new one will be created and saved.
func (*Image) VersionTouchOrigFromOutside ¶
func (self *Image) VersionTouchOrigFromOutside(width, height int, horAlign HorAlignment, verAlign VerAlignment, grayscale bool, outsideColor color.Color) (im *ImageVersion, err error)
func (*Image) VersionTouchOrigFromOutsideCentered ¶
type ImageRef ¶
type ImageRef string
func (*ImageRef) GetImage ¶
GetImage loads the referenced image, or returns nil if the reference is empty.
type ImageVersion ¶
type ImageVersion struct { ID model.String `bson:",omitempty"` Filename model.String ContentType model.String SourceRect ModelRect OutsideColor model.Color Width model.Int Height model.Int Grayscale model.Bool // contains filtered or unexported fields }
func (*ImageVersion) AspectRatio ¶
func (self *ImageVersion) AspectRatio() float64
AspectRatio returns Width / Height
func (*ImageVersion) SaveImageData ¶
func (self *ImageVersion) SaveImageData(data []byte) error
func (*ImageVersion) URL ¶
func (self *ImageVersion) URL() view.URL
func (*ImageVersion) ViewImageLink ¶
func (self *ImageVersion) ViewImageLink(imageClass, linkClass string) *view.Link