Documentation
¶
Index ¶
- type GalleryReaderWriter
- func (_m *GalleryReaderWriter) All() ([]*models.Gallery, error)
- func (_m *GalleryReaderWriter) Create(newGallery models.Gallery) (*models.Gallery, error)
- func (_m *GalleryReaderWriter) FindByChecksum(checksum string) (*models.Gallery, error)
- func (_m *GalleryReaderWriter) FindByImageID(imageID int) ([]*models.Gallery, error)
- func (_m *GalleryReaderWriter) FindByPath(path string) (*models.Gallery, error)
- func (_m *GalleryReaderWriter) FindBySceneID(sceneID int) (*models.Gallery, error)
- func (_m *GalleryReaderWriter) FindMany(ids []int) ([]*models.Gallery, error)
- func (_m *GalleryReaderWriter) Update(updatedGallery models.Gallery) (*models.Gallery, error)
- type ImageReaderWriter
- func (_m *ImageReaderWriter) All() ([]*models.Image, error)
- func (_m *ImageReaderWriter) Create(newImage models.Image) (*models.Image, error)
- func (_m *ImageReaderWriter) FindByChecksum(checksum string) (*models.Image, error)
- func (_m *ImageReaderWriter) FindByGalleryID(galleryID int) ([]*models.Image, error)
- func (_m *ImageReaderWriter) FindMany(ids []int) ([]*models.Image, error)
- func (_m *ImageReaderWriter) Update(updatedImage models.ImagePartial) (*models.Image, error)
- func (_m *ImageReaderWriter) UpdateFull(updatedImage models.Image) (*models.Image, error)
- type JoinReaderWriter
- func (_m *JoinReaderWriter) CreateMoviesScenes(newJoins []models.MoviesScenes) error
- func (_m *JoinReaderWriter) CreatePerformersScenes(newJoins []models.PerformersScenes) error
- func (_m *JoinReaderWriter) GetSceneMovies(sceneID int) ([]models.MoviesScenes, error)
- func (_m *JoinReaderWriter) UpdateGalleriesImages(imageID int, updatedJoins []models.GalleriesImages) error
- func (_m *JoinReaderWriter) UpdateGalleriesTags(galleryID int, updatedJoins []models.GalleriesTags) error
- func (_m *JoinReaderWriter) UpdateImagesTags(imageID int, updatedJoins []models.ImagesTags) error
- func (_m *JoinReaderWriter) UpdateMoviesScenes(sceneID int, updatedJoins []models.MoviesScenes) error
- func (_m *JoinReaderWriter) UpdatePerformersGalleries(galleryID int, updatedJoins []models.PerformersGalleries) error
- func (_m *JoinReaderWriter) UpdatePerformersImages(imageID int, updatedJoins []models.PerformersImages) error
- func (_m *JoinReaderWriter) UpdatePerformersScenes(sceneID int, updatedJoins []models.PerformersScenes) error
- func (_m *JoinReaderWriter) UpdateSceneMarkersTags(sceneMarkerID int, updatedJoins []models.SceneMarkersTags) error
- func (_m *JoinReaderWriter) UpdateScenesTags(sceneID int, updatedJoins []models.ScenesTags) error
- type MovieReaderWriter
- func (_m *MovieReaderWriter) All() ([]*models.Movie, error)
- func (_m *MovieReaderWriter) Create(newMovie models.Movie) (*models.Movie, error)
- func (_m *MovieReaderWriter) Find(id int) (*models.Movie, error)
- func (_m *MovieReaderWriter) FindByName(name string, nocase bool) (*models.Movie, error)
- func (_m *MovieReaderWriter) FindByNames(names []string, nocase bool) ([]*models.Movie, error)
- func (_m *MovieReaderWriter) FindMany(ids []int) ([]*models.Movie, error)
- func (_m *MovieReaderWriter) GetBackImage(movieID int) ([]byte, error)
- func (_m *MovieReaderWriter) GetFrontImage(movieID int) ([]byte, error)
- func (_m *MovieReaderWriter) Update(updatedMovie models.MoviePartial) (*models.Movie, error)
- func (_m *MovieReaderWriter) UpdateFull(updatedMovie models.Movie) (*models.Movie, error)
- func (_m *MovieReaderWriter) UpdateMovieImages(movieID int, frontImage []byte, backImage []byte) error
- type PerformerReaderWriter
- func (_m *PerformerReaderWriter) All() ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) Create(newPerformer models.Performer) (*models.Performer, error)
- func (_m *PerformerReaderWriter) FindByGalleryID(galleryID int) ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) FindByImageID(imageID int) ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) FindByNames(names []string, nocase bool) ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) FindBySceneID(sceneID int) ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) FindMany(ids []int) ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) FindNamesBySceneID(sceneID int) ([]*models.Performer, error)
- func (_m *PerformerReaderWriter) GetPerformerImage(performerID int) ([]byte, error)
- func (_m *PerformerReaderWriter) Update(updatedPerformer models.Performer) (*models.Performer, error)
- func (_m *PerformerReaderWriter) UpdatePerformerImage(performerID int, image []byte) error
- type SceneMarkerReaderWriter
- func (_m *SceneMarkerReaderWriter) Create(newSceneMarker models.SceneMarker) (*models.SceneMarker, error)
- func (_m *SceneMarkerReaderWriter) FindBySceneID(sceneID int) ([]*models.SceneMarker, error)
- func (_m *SceneMarkerReaderWriter) Update(updatedSceneMarker models.SceneMarker) (*models.SceneMarker, error)
- type SceneReaderWriter
- func (_m *SceneReaderWriter) All() ([]*models.Scene, error)
- func (_m *SceneReaderWriter) Create(newScene models.Scene) (*models.Scene, error)
- func (_m *SceneReaderWriter) FindByChecksum(checksum string) (*models.Scene, error)
- func (_m *SceneReaderWriter) FindByMovieID(movieID int) ([]*models.Scene, error)
- func (_m *SceneReaderWriter) FindByOSHash(oshash string) (*models.Scene, error)
- func (_m *SceneReaderWriter) FindMany(ids []int) ([]*models.Scene, error)
- func (_m *SceneReaderWriter) GetSceneCover(sceneID int) ([]byte, error)
- func (_m *SceneReaderWriter) Update(updatedScene models.ScenePartial) (*models.Scene, error)
- func (_m *SceneReaderWriter) UpdateFull(updatedScene models.Scene) (*models.Scene, error)
- func (_m *SceneReaderWriter) UpdateSceneCover(sceneID int, cover []byte) error
- type StudioReaderWriter
- func (_m *StudioReaderWriter) All() ([]*models.Studio, error)
- func (_m *StudioReaderWriter) Create(newStudio models.Studio) (*models.Studio, error)
- func (_m *StudioReaderWriter) Find(id int) (*models.Studio, error)
- func (_m *StudioReaderWriter) FindByName(name string, nocase bool) (*models.Studio, error)
- func (_m *StudioReaderWriter) FindMany(ids []int) ([]*models.Studio, error)
- func (_m *StudioReaderWriter) GetStudioImage(studioID int) ([]byte, error)
- func (_m *StudioReaderWriter) Update(updatedStudio models.StudioPartial) (*models.Studio, error)
- func (_m *StudioReaderWriter) UpdateFull(updatedStudio models.Studio) (*models.Studio, error)
- func (_m *StudioReaderWriter) UpdateStudioImage(studioID int, image []byte) error
- type TagReaderWriter
- func (_m *TagReaderWriter) All() ([]*models.Tag, error)
- func (_m *TagReaderWriter) Create(newTag models.Tag) (*models.Tag, error)
- func (_m *TagReaderWriter) Find(id int) (*models.Tag, error)
- func (_m *TagReaderWriter) FindByGalleryID(galleryID int) ([]*models.Tag, error)
- func (_m *TagReaderWriter) FindByImageID(imageID int) ([]*models.Tag, error)
- func (_m *TagReaderWriter) FindByName(name string, nocase bool) (*models.Tag, error)
- func (_m *TagReaderWriter) FindByNames(names []string, nocase bool) ([]*models.Tag, error)
- func (_m *TagReaderWriter) FindBySceneID(sceneID int) ([]*models.Tag, error)
- func (_m *TagReaderWriter) FindBySceneMarkerID(sceneMarkerID int) ([]*models.Tag, error)
- func (_m *TagReaderWriter) FindMany(ids []int) ([]*models.Tag, error)
- func (_m *TagReaderWriter) GetTagImage(tagID int) ([]byte, error)
- func (_m *TagReaderWriter) Update(updatedTag models.Tag) (*models.Tag, error)
- func (_m *TagReaderWriter) UpdateTagImage(tagID int, image []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GalleryReaderWriter ¶
GalleryReaderWriter is an autogenerated mock type for the GalleryReaderWriter type
func (*GalleryReaderWriter) All ¶
func (_m *GalleryReaderWriter) All() ([]*models.Gallery, error)
All provides a mock function with given fields:
func (*GalleryReaderWriter) FindByChecksum ¶
func (_m *GalleryReaderWriter) FindByChecksum(checksum string) (*models.Gallery, error)
FindByChecksum provides a mock function with given fields: checksum
func (*GalleryReaderWriter) FindByImageID ¶
func (_m *GalleryReaderWriter) FindByImageID(imageID int) ([]*models.Gallery, error)
FindByImageID provides a mock function with given fields: imageID
func (*GalleryReaderWriter) FindByPath ¶
func (_m *GalleryReaderWriter) FindByPath(path string) (*models.Gallery, error)
FindByPath provides a mock function with given fields: path
func (*GalleryReaderWriter) FindBySceneID ¶
func (_m *GalleryReaderWriter) FindBySceneID(sceneID int) (*models.Gallery, error)
FindBySceneID provides a mock function with given fields: sceneID
type ImageReaderWriter ¶
ImageReaderWriter is an autogenerated mock type for the ImageReaderWriter type
func (*ImageReaderWriter) All ¶
func (_m *ImageReaderWriter) All() ([]*models.Image, error)
All provides a mock function with given fields:
func (*ImageReaderWriter) FindByChecksum ¶
func (_m *ImageReaderWriter) FindByChecksum(checksum string) (*models.Image, error)
FindByChecksum provides a mock function with given fields: checksum
func (*ImageReaderWriter) FindByGalleryID ¶
func (_m *ImageReaderWriter) FindByGalleryID(galleryID int) ([]*models.Image, error)
FindByGalleryID provides a mock function with given fields: galleryID
func (*ImageReaderWriter) FindMany ¶
func (_m *ImageReaderWriter) FindMany(ids []int) ([]*models.Image, error)
FindMany provides a mock function with given fields: ids
func (*ImageReaderWriter) Update ¶
func (_m *ImageReaderWriter) Update(updatedImage models.ImagePartial) (*models.Image, error)
Update provides a mock function with given fields: updatedImage
func (*ImageReaderWriter) UpdateFull ¶
UpdateFull provides a mock function with given fields: updatedImage
type JoinReaderWriter ¶
JoinReaderWriter is an autogenerated mock type for the JoinReaderWriter type
func (*JoinReaderWriter) CreateMoviesScenes ¶
func (_m *JoinReaderWriter) CreateMoviesScenes(newJoins []models.MoviesScenes) error
CreateMoviesScenes provides a mock function with given fields: newJoins
func (*JoinReaderWriter) CreatePerformersScenes ¶
func (_m *JoinReaderWriter) CreatePerformersScenes(newJoins []models.PerformersScenes) error
CreatePerformersScenes provides a mock function with given fields: newJoins
func (*JoinReaderWriter) GetSceneMovies ¶
func (_m *JoinReaderWriter) GetSceneMovies(sceneID int) ([]models.MoviesScenes, error)
GetSceneMovies provides a mock function with given fields: sceneID
func (*JoinReaderWriter) UpdateGalleriesImages ¶
func (_m *JoinReaderWriter) UpdateGalleriesImages(imageID int, updatedJoins []models.GalleriesImages) error
UpdateGalleriesImages provides a mock function with given fields: imageID, updatedJoins
func (*JoinReaderWriter) UpdateGalleriesTags ¶
func (_m *JoinReaderWriter) UpdateGalleriesTags(galleryID int, updatedJoins []models.GalleriesTags) error
UpdateGalleriesTags provides a mock function with given fields: galleryID, updatedJoins
func (*JoinReaderWriter) UpdateImagesTags ¶
func (_m *JoinReaderWriter) UpdateImagesTags(imageID int, updatedJoins []models.ImagesTags) error
UpdateImagesTags provides a mock function with given fields: imageID, updatedJoins
func (*JoinReaderWriter) UpdateMoviesScenes ¶
func (_m *JoinReaderWriter) UpdateMoviesScenes(sceneID int, updatedJoins []models.MoviesScenes) error
UpdateMoviesScenes provides a mock function with given fields: sceneID, updatedJoins
func (*JoinReaderWriter) UpdatePerformersGalleries ¶
func (_m *JoinReaderWriter) UpdatePerformersGalleries(galleryID int, updatedJoins []models.PerformersGalleries) error
UpdatePerformersGalleries provides a mock function with given fields: galleryID, updatedJoins
func (*JoinReaderWriter) UpdatePerformersImages ¶
func (_m *JoinReaderWriter) UpdatePerformersImages(imageID int, updatedJoins []models.PerformersImages) error
UpdatePerformersImages provides a mock function with given fields: imageID, updatedJoins
func (*JoinReaderWriter) UpdatePerformersScenes ¶
func (_m *JoinReaderWriter) UpdatePerformersScenes(sceneID int, updatedJoins []models.PerformersScenes) error
UpdatePerformersScenes provides a mock function with given fields: sceneID, updatedJoins
func (*JoinReaderWriter) UpdateSceneMarkersTags ¶
func (_m *JoinReaderWriter) UpdateSceneMarkersTags(sceneMarkerID int, updatedJoins []models.SceneMarkersTags) error
UpdateSceneMarkersTags provides a mock function with given fields: sceneMarkerID, updatedJoins
func (*JoinReaderWriter) UpdateScenesTags ¶
func (_m *JoinReaderWriter) UpdateScenesTags(sceneID int, updatedJoins []models.ScenesTags) error
UpdateScenesTags provides a mock function with given fields: sceneID, updatedJoins
type MovieReaderWriter ¶
MovieReaderWriter is an autogenerated mock type for the MovieReaderWriter type
func (*MovieReaderWriter) All ¶
func (_m *MovieReaderWriter) All() ([]*models.Movie, error)
All provides a mock function with given fields:
func (*MovieReaderWriter) Find ¶
func (_m *MovieReaderWriter) Find(id int) (*models.Movie, error)
Find provides a mock function with given fields: id
func (*MovieReaderWriter) FindByName ¶
FindByName provides a mock function with given fields: name, nocase
func (*MovieReaderWriter) FindByNames ¶
FindByNames provides a mock function with given fields: names, nocase
func (*MovieReaderWriter) FindMany ¶
func (_m *MovieReaderWriter) FindMany(ids []int) ([]*models.Movie, error)
FindMany provides a mock function with given fields: ids
func (*MovieReaderWriter) GetBackImage ¶
func (_m *MovieReaderWriter) GetBackImage(movieID int) ([]byte, error)
GetBackImage provides a mock function with given fields: movieID
func (*MovieReaderWriter) GetFrontImage ¶
func (_m *MovieReaderWriter) GetFrontImage(movieID int) ([]byte, error)
GetFrontImage provides a mock function with given fields: movieID
func (*MovieReaderWriter) Update ¶
func (_m *MovieReaderWriter) Update(updatedMovie models.MoviePartial) (*models.Movie, error)
Update provides a mock function with given fields: updatedMovie
func (*MovieReaderWriter) UpdateFull ¶
UpdateFull provides a mock function with given fields: updatedMovie
func (*MovieReaderWriter) UpdateMovieImages ¶
func (_m *MovieReaderWriter) UpdateMovieImages(movieID int, frontImage []byte, backImage []byte) error
UpdateMovieImages provides a mock function with given fields: movieID, frontImage, backImage
type PerformerReaderWriter ¶
PerformerReaderWriter is an autogenerated mock type for the PerformerReaderWriter type
func (*PerformerReaderWriter) All ¶
func (_m *PerformerReaderWriter) All() ([]*models.Performer, error)
All provides a mock function with given fields:
func (*PerformerReaderWriter) Create ¶
Create provides a mock function with given fields: newPerformer
func (*PerformerReaderWriter) FindByGalleryID ¶
func (_m *PerformerReaderWriter) FindByGalleryID(galleryID int) ([]*models.Performer, error)
FindByGalleryID provides a mock function with given fields: galleryID
func (*PerformerReaderWriter) FindByImageID ¶
func (_m *PerformerReaderWriter) FindByImageID(imageID int) ([]*models.Performer, error)
FindByImageID provides a mock function with given fields: imageID
func (*PerformerReaderWriter) FindByNames ¶
func (_m *PerformerReaderWriter) FindByNames(names []string, nocase bool) ([]*models.Performer, error)
FindByNames provides a mock function with given fields: names, nocase
func (*PerformerReaderWriter) FindBySceneID ¶
func (_m *PerformerReaderWriter) FindBySceneID(sceneID int) ([]*models.Performer, error)
FindBySceneID provides a mock function with given fields: sceneID
func (*PerformerReaderWriter) FindMany ¶
func (_m *PerformerReaderWriter) FindMany(ids []int) ([]*models.Performer, error)
FindMany provides a mock function with given fields: ids
func (*PerformerReaderWriter) FindNamesBySceneID ¶
func (_m *PerformerReaderWriter) FindNamesBySceneID(sceneID int) ([]*models.Performer, error)
FindNamesBySceneID provides a mock function with given fields: sceneID
func (*PerformerReaderWriter) GetPerformerImage ¶
func (_m *PerformerReaderWriter) GetPerformerImage(performerID int) ([]byte, error)
GetPerformerImage provides a mock function with given fields: performerID
func (*PerformerReaderWriter) Update ¶
func (_m *PerformerReaderWriter) Update(updatedPerformer models.Performer) (*models.Performer, error)
Update provides a mock function with given fields: updatedPerformer
func (*PerformerReaderWriter) UpdatePerformerImage ¶
func (_m *PerformerReaderWriter) UpdatePerformerImage(performerID int, image []byte) error
UpdatePerformerImage provides a mock function with given fields: performerID, image
type SceneMarkerReaderWriter ¶
SceneMarkerReaderWriter is an autogenerated mock type for the SceneMarkerReaderWriter type
func (*SceneMarkerReaderWriter) Create ¶
func (_m *SceneMarkerReaderWriter) Create(newSceneMarker models.SceneMarker) (*models.SceneMarker, error)
Create provides a mock function with given fields: newSceneMarker
func (*SceneMarkerReaderWriter) FindBySceneID ¶
func (_m *SceneMarkerReaderWriter) FindBySceneID(sceneID int) ([]*models.SceneMarker, error)
FindBySceneID provides a mock function with given fields: sceneID
func (*SceneMarkerReaderWriter) Update ¶
func (_m *SceneMarkerReaderWriter) Update(updatedSceneMarker models.SceneMarker) (*models.SceneMarker, error)
Update provides a mock function with given fields: updatedSceneMarker
type SceneReaderWriter ¶
SceneReaderWriter is an autogenerated mock type for the SceneReaderWriter type
func (*SceneReaderWriter) All ¶
func (_m *SceneReaderWriter) All() ([]*models.Scene, error)
All provides a mock function with given fields:
func (*SceneReaderWriter) FindByChecksum ¶
func (_m *SceneReaderWriter) FindByChecksum(checksum string) (*models.Scene, error)
FindByChecksum provides a mock function with given fields: checksum
func (*SceneReaderWriter) FindByMovieID ¶
func (_m *SceneReaderWriter) FindByMovieID(movieID int) ([]*models.Scene, error)
FindByMovieID provides a mock function with given fields: movieID
func (*SceneReaderWriter) FindByOSHash ¶
func (_m *SceneReaderWriter) FindByOSHash(oshash string) (*models.Scene, error)
FindByOSHash provides a mock function with given fields: oshash
func (*SceneReaderWriter) FindMany ¶
func (_m *SceneReaderWriter) FindMany(ids []int) ([]*models.Scene, error)
FindMany provides a mock function with given fields: ids
func (*SceneReaderWriter) GetSceneCover ¶
func (_m *SceneReaderWriter) GetSceneCover(sceneID int) ([]byte, error)
GetSceneCover provides a mock function with given fields: sceneID
func (*SceneReaderWriter) Update ¶
func (_m *SceneReaderWriter) Update(updatedScene models.ScenePartial) (*models.Scene, error)
Update provides a mock function with given fields: updatedScene
func (*SceneReaderWriter) UpdateFull ¶
UpdateFull provides a mock function with given fields: updatedScene
func (*SceneReaderWriter) UpdateSceneCover ¶
func (_m *SceneReaderWriter) UpdateSceneCover(sceneID int, cover []byte) error
UpdateSceneCover provides a mock function with given fields: sceneID, cover
type StudioReaderWriter ¶
StudioReaderWriter is an autogenerated mock type for the StudioReaderWriter type
func (*StudioReaderWriter) All ¶
func (_m *StudioReaderWriter) All() ([]*models.Studio, error)
All provides a mock function with given fields:
func (*StudioReaderWriter) Find ¶
func (_m *StudioReaderWriter) Find(id int) (*models.Studio, error)
Find provides a mock function with given fields: id
func (*StudioReaderWriter) FindByName ¶
FindByName provides a mock function with given fields: name, nocase
func (*StudioReaderWriter) FindMany ¶
func (_m *StudioReaderWriter) FindMany(ids []int) ([]*models.Studio, error)
FindMany provides a mock function with given fields: ids
func (*StudioReaderWriter) GetStudioImage ¶
func (_m *StudioReaderWriter) GetStudioImage(studioID int) ([]byte, error)
GetStudioImage provides a mock function with given fields: studioID
func (*StudioReaderWriter) Update ¶
func (_m *StudioReaderWriter) Update(updatedStudio models.StudioPartial) (*models.Studio, error)
Update provides a mock function with given fields: updatedStudio
func (*StudioReaderWriter) UpdateFull ¶
UpdateFull provides a mock function with given fields: updatedStudio
func (*StudioReaderWriter) UpdateStudioImage ¶
func (_m *StudioReaderWriter) UpdateStudioImage(studioID int, image []byte) error
UpdateStudioImage provides a mock function with given fields: studioID, image
type TagReaderWriter ¶
TagReaderWriter is an autogenerated mock type for the TagReaderWriter type
func (*TagReaderWriter) All ¶
func (_m *TagReaderWriter) All() ([]*models.Tag, error)
All provides a mock function with given fields:
func (*TagReaderWriter) Find ¶
func (_m *TagReaderWriter) Find(id int) (*models.Tag, error)
Find provides a mock function with given fields: id
func (*TagReaderWriter) FindByGalleryID ¶
func (_m *TagReaderWriter) FindByGalleryID(galleryID int) ([]*models.Tag, error)
FindByGalleryID provides a mock function with given fields: galleryID
func (*TagReaderWriter) FindByImageID ¶
func (_m *TagReaderWriter) FindByImageID(imageID int) ([]*models.Tag, error)
FindByImageID provides a mock function with given fields: imageID
func (*TagReaderWriter) FindByName ¶
FindByName provides a mock function with given fields: name, nocase
func (*TagReaderWriter) FindByNames ¶
FindByNames provides a mock function with given fields: names, nocase
func (*TagReaderWriter) FindBySceneID ¶
func (_m *TagReaderWriter) FindBySceneID(sceneID int) ([]*models.Tag, error)
FindBySceneID provides a mock function with given fields: sceneID
func (*TagReaderWriter) FindBySceneMarkerID ¶
func (_m *TagReaderWriter) FindBySceneMarkerID(sceneMarkerID int) ([]*models.Tag, error)
FindBySceneMarkerID provides a mock function with given fields: sceneMarkerID
func (*TagReaderWriter) FindMany ¶
func (_m *TagReaderWriter) FindMany(ids []int) ([]*models.Tag, error)
FindMany provides a mock function with given fields: ids
func (*TagReaderWriter) GetTagImage ¶
func (_m *TagReaderWriter) GetTagImage(tagID int) ([]byte, error)
GetTagImage provides a mock function with given fields: tagID
func (*TagReaderWriter) UpdateTagImage ¶
func (_m *TagReaderWriter) UpdateTagImage(tagID int, image []byte) error
UpdateTagImage provides a mock function with given fields: tagID, image