Файл: vendor/intervention/image/src/Interfaces/ImageInterface.php
Строк: 1717
<?php
declare(strict_types=1);
namespace InterventionImageInterfaces;
use Closure;
use Countable;
use InterventionImageEncodersAutoEncoder;
use InterventionImageExceptionsAnimationException;
use InterventionImageExceptionsRuntimeException;
use InterventionImageFileExtension;
use InterventionImageGeometryBezier;
use InterventionImageGeometryCircle;
use InterventionImageGeometryEllipse;
use InterventionImageGeometryLine;
use InterventionImageGeometryPolygon;
use InterventionImageGeometryRectangle;
use InterventionImageMediaType;
use InterventionImageOrigin;
use IteratorAggregate;
/**
* @extends IteratorAggregate<FrameInterface>
*/
interface ImageInterface extends IteratorAggregate, Countable
{
/**
* Return driver of current image
*
* @return DriverInterface
*/
public function driver(): DriverInterface;
/**
* Return core of current image
*
* @return CoreInterface
*/
public function core(): CoreInterface;
/**
* Return the origin of the image
*
* @return Origin
*/
public function origin(): Origin;
/**
* Set the origin of the image
*
* @param Origin $origin
* @return ImageInterface
*/
public function setOrigin(Origin $origin): self;
/**
* Return width of current image
*
* @link https://image.intervention.io/v3/basics/meta-information#reading-the-pixel-width
* @throws RuntimeException
* @return int
*/
public function width(): int;
/**
* Return height of current image
*
* @link https://image.intervention.io/v3/basics/meta-information#reading-the-pixel-height
* @throws RuntimeException
* @return int
*/
public function height(): int;
/**
* Return size of current image
*
* @link https://image.intervention.io/v3/basics/meta-information#reading-the-image-size-as-an-object
* @throws RuntimeException
* @return SizeInterface
*/
public function size(): SizeInterface;
/**
* Encode image with given encoder
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-images
* @param EncoderInterface $encoder
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function encode(EncoderInterface $encoder = new AutoEncoder()): EncodedImageInterface;
/**
* Save the image to the specified path in the file system. If no path is
* given, the image will be saved at its original location.
*
* @link https://image.intervention.io/v3/basics/image-output#writing-images-directly
* @param null|string $path
* @throws RuntimeException
* @return ImageInterface
*/
public function save(?string $path = null, mixed ...$options): self;
/**
* Apply given modifier to current image
*
* @link https://image.intervention.io/v3/modifying/custom-modifiers
* @param ModifierInterface $modifier
* @throws RuntimeException
* @return ImageInterface
*/
public function modify(ModifierInterface $modifier): self;
/**
* Analyzer current image with given analyzer
*
* @param AnalyzerInterface $analyzer
* @throws RuntimeException
* @return mixed
*/
public function analyze(AnalyzerInterface $analyzer): mixed;
/**
* Determine if current image is animated
*
* @link https://image.intervention.io/v3/modifying/animations#check-the-current-image-instance-for-animation
* @return bool
*/
public function isAnimated(): bool;
/**
* Remove all frames but keep the one at the specified position
*
* It is possible to specify the position as integer or string values.
* With the former, the exact position passed is searched for, while
* string values must represent a percentage value between '0%' and '100%'
* and the respective frame position is only determined approximately.
*
* @link https://image.intervention.io/v3/modifying/animations#removing-animation
* @param int|string $position
* @throws RuntimeException
* @return ImageInterface
*/
public function removeAnimation(int|string $position = 0): self;
/**
* Extract animation frames based on given values and discard the rest
*
* @link https://image.intervention.io/v3/modifying/animations#changing-the-animation-frames
* @param int $offset
* @param null|int $length
* @throws RuntimeException
* @return ImageInterface
*/
public function sliceAnimation(int $offset = 0, ?int $length = null): self;
/**
* Return loop count of animated image
*
* @link https://image.intervention.io/v3/modifying/animations#reading-the-animation-iteration-count
* @return int
*/
public function loops(): int;
/**
* Set loop count of animated image
*
* @link https://image.intervention.io/v3/modifying/animations#changing-the-animation-iteration-count
* @param int $loops
* @return ImageInterface
*/
public function setLoops(int $loops): self;
/**
* Return exif data of current image
*
* @link https://image.intervention.io/v3/basics/meta-information#exif-information
* @return mixed
*/
public function exif(?string $query = null): mixed;
/**
* Set exif data for the image object
*
* @param CollectionInterface $exif
* @return ImageInterface
*/
public function setExif(CollectionInterface $exif): self;
/**
* Return image resolution/density
*
* @link https://image.intervention.io/v3/basics/meta-information#image-resolution
* @throws RuntimeException
* @return ResolutionInterface
*/
public function resolution(): ResolutionInterface;
/**
* Set image resolution
*
* @link https://image.intervention.io/v3/basics/meta-information#image-resolution
* @param float $x
* @param float $y
* @throws RuntimeException
* @return ImageInterface
*/
public function setResolution(float $x, float $y): self;
/**
* Get the colorspace of the image
*
* @link https://image.intervention.io/v3/basics/colors#reading-the-colorspace
* @throws RuntimeException
* @return ColorspaceInterface
*/
public function colorspace(): ColorspaceInterface;
/**
* Transform image to given colorspace
*
* @link https://image.intervention.io/v3/basics/colors#changing-the-colorspace
* @param string|ColorspaceInterface $colorspace
* @throws RuntimeException
* @return ImageInterface
*/
public function setColorspace(string|ColorspaceInterface $colorspace): self;
/**
* Return color of pixel at given position on given frame position
*
* @link https://image.intervention.io/v3/basics/colors#color-information
* @param int $x
* @param int $y
* @param int $frame_key
* @throws RuntimeException
* @return ColorInterface
*/
public function pickColor(int $x, int $y, int $frame_key = 0): ColorInterface;
/**
* Return all colors of pixel at given position for all frames of image
*
* @link https://image.intervention.io/v3/basics/colors#color-information
* @param int $x
* @param int $y
* @throws RuntimeException
* @return CollectionInterface
*/
public function pickColors(int $x, int $y): CollectionInterface;
/**
* Return color that is mixed with transparent areas when converting to a format which
* does not support transparency.
*
* @throws RuntimeException
* @return ColorInterface
*/
public function blendingColor(): ColorInterface;
/**
* Set blending color will have no effect unless image is converted into a format
* which does not support transparency.
*
* @param mixed $color
* @throws RuntimeException
* @return ImageInterface
*/
public function setBlendingColor(mixed $color): self;
/**
* Replace transparent areas of the image with given color
*
* @param mixed $color
* @throws RuntimeException
* @return ImageInterface
*/
public function blendTransparency(mixed $color = null): self;
/**
* Retrieve ICC color profile of image
*
* @link https://image.intervention.io/v3/basics/colors#color-profiles
* @throws RuntimeException
* @return ProfileInterface
*/
public function profile(): ProfileInterface;
/**
* Set given icc color profile to image
*
* @link https://image.intervention.io/v3/basics/colors#color-profiles
* @param ProfileInterface $profile
* @throws RuntimeException
* @return ImageInterface
*/
public function setProfile(ProfileInterface $profile): self;
/**
* Remove ICC color profile from the current image
*
* @link https://image.intervention.io/v3/basics/colors#color-profiles
* @throws RuntimeException
* @return ImageInterface
*/
public function removeProfile(): self;
/**
* Apply color quantization to the current image
*
* @link https://image.intervention.io/v3/modifying/effects#reduce-colors
* @param int $limit
* @param mixed $background
* @throws RuntimeException
* @return ImageInterface
*/
public function reduceColors(int $limit, mixed $background = 'transparent'): self;
/**
* Sharpen the current image with given strength
*
* @link https://image.intervention.io/v3/modifying/effects#sharpening-effect
* @param int $amount
* @throws RuntimeException
* @return ImageInterface
*/
public function sharpen(int $amount = 10): self;
/**
* Turn image into a greyscale version
*
* @link https://image.intervention.io/v3/modifying/effects#convert-image-to-a-greyscale-version
* @throws RuntimeException
* @return ImageInterface
*/
public function greyscale(): self;
/**
* Adjust brightness of the current image
*
* @link https://image.intervention.io/v3/modifying/effects#changing-the-brightness
* @param int $level
* @throws RuntimeException
* @return ImageInterface
*/
public function brightness(int $level): self;
/**
* Adjust color contrast of the current image
*
* @link https://image.intervention.io/v3/modifying/effects#changing-the-contrast
* @param int $level
* @throws RuntimeException
* @return ImageInterface
*/
public function contrast(int $level): self;
/**
* Apply gamma correction on the current image
*
* @link https://image.intervention.io/v3/modifying/effects#gamma-correction
* @param float $gamma
* @throws RuntimeException
* @return ImageInterface
*/
public function gamma(float $gamma): self;
/**
* Adjust the intensity of the RGB color channels
*
* @link https://image.intervention.io/v3/modifying/effects#color-correction
* @param int $red
* @param int $green
* @param int $blue
* @throws RuntimeException
* @return ImageInterface
*/
public function colorize(int $red = 0, int $green = 0, int $blue = 0): self;
/**
* Mirror the current image horizontally
*
* @link https://image.intervention.io/v3/modifying/effects#mirror-image-vertically
* @throws RuntimeException
* @return ImageInterface
*/
public function flip(): self;
/**
* Mirror the current image vertically
*
* @link https://image.intervention.io/v3/modifying/effects#mirror-image-horizontally
* @throws RuntimeException
* @return ImageInterface
*/
public function flop(): self;
/**
* Blur current image by given strength
*
* @link https://image.intervention.io/v3/modifying/effects#blur-effect
* @param int $amount
* @throws RuntimeException
* @return ImageInterface
*/
public function blur(int $amount = 5): self;
/**
* Invert the colors of the current image
*
* @link https://image.intervention.io/v3/modifying/effects#invert-colors
* @throws RuntimeException
* @return ImageInterface
*/
public function invert(): self;
/**
* Apply pixelation filter effect on current image
*
* @link https://image.intervention.io/v3/modifying/effects#pixelation-effect
* @param int $size
* @throws RuntimeException
* @return ImageInterface
*/
public function pixelate(int $size): self;
/**
* Rotate current image by given angle
*
* @link https://image.intervention.io/v3/modifying/effects#image-rotation
* @param float $angle
* @param string $background
* @throws RuntimeException
* @return ImageInterface
*/
public function rotate(float $angle, mixed $background = 'ffffff'): self;
/**
* Rotate the image to be upright according to exif information
*
* @link https://image.intervention.io/v3/modifying/effects#image-orientation-according-to-exif-data
* @throws RuntimeException
* @return ImageInterface
*/
public function orient(): self;
/**
* Draw text on image
*
* @link https://image.intervention.io/v3/modifying/text-fonts
* @param string $text
* @param int $x
* @param int $y
* @param callable|Closure|FontInterface $font
* @throws RuntimeException
* @return ImageInterface
*/
public function text(string $text, int $x, int $y, callable|Closure|FontInterface $font): self;
/**
* Resize image to the given width and/or height
*
* @link https://image.intervention.io/v3/modifying/resizing#simple-image-resizing
* @param null|int $width
* @param null|int $height
* @throws RuntimeException
* @return ImageInterface
*/
public function resize(?int $width = null, ?int $height = null): self;
/**
* Resize image to the given width and/or height without exceeding the original dimensions
*
* @link https://image.intervention.io/v3/modifying/resizing#resizing-without-exceeding-the-original-size
* @param null|int $width
* @param null|int $height
* @throws RuntimeException
* @return ImageInterface
*/
public function resizeDown(?int $width = null, ?int $height = null): self;
/**
* Resize image to the given width and/or height and keep the original aspect ratio
*
* @link https://image.intervention.io/v3/modifying/resizing#scaling-images
* @param null|int $width
* @param null|int $height
* @throws RuntimeException
* @return ImageInterface
*/
public function scale(?int $width = null, ?int $height = null): self;
/**
* Resize image to the given width and/or height, keep the original aspect ratio
* and do not exceed the original image width or height
*
* @link https://image.intervention.io/v3/modifying/resizing#scaling-images-but-do-not-exceed-the-original-size
* @param null|int $width
* @param null|int $height
* @throws RuntimeException
* @return ImageInterface
*/
public function scaleDown(?int $width = null, ?int $height = null): self;
/**
* Takes the given dimensions and scales it to the largest possible size matching
* the original size. Then this size is positioned on the original and cut out
* before being resized to the desired size from the arguments
*
* @link https://image.intervention.io/v3/modifying/resizing#fitted-image-resizing
* @param int $width
* @param int $height
* @param string $position
* @throws RuntimeException
* @return ImageInterface
*/
public function cover(int $width, int $height, string $position = 'center'): self;
/**
* Same as cover() but do not exceed the original image size
*
* @link https://image.intervention.io/v3/modifying/resizing#fitted-resizing-without-exceeding-the-original-size
* @param int $width
* @param int $height
* @param string $position
* @throws RuntimeException
* @return ImageInterface
*/
public function coverDown(int $width, int $height, string $position = 'center'): self;
/**
* Resize the boundaries of the current image to given width and height.
* An anchor position can be defined to determine where the original image
* is fixed. A background color can be passed to define the color of the
* new emerging areas.
*
* @link https://image.intervention.io/v3/modifying/resizing#resize-image-canvas
* @param null|int $width
* @param null|int $height
* @param string $position
* @param mixed $background
* @throws RuntimeException
* @return ImageInterface
*/
public function resizeCanvas(
?int $width = null,
?int $height = null,
mixed $background = 'ffffff',
string $position = 'center'
): self;
/**
* Resize canvas in the same way as resizeCanvas() but takes relative values
* for the width and height, which will be added or subtracted to the
* original image size.
*
* @link https://image.intervention.io/v3/modifying/resizing#resize-image-boundaries-relative-to-the-original
* @param null|int $width
* @param null|int $height
* @param string $position
* @param mixed $background
* @throws RuntimeException
* @return ImageInterface
*/
public function resizeCanvasRelative(
?int $width = null,
?int $height = null,
mixed $background = 'ffffff',
string $position = 'center'
): self;
/**
* Padded resizing means that the original image is scaled until it fits the
* defined target size with unchanged aspect ratio. The original image is
* not scaled up but only down.
*
* Compared to the cover() method, this method does not create cropped areas,
* but possibly new empty areas on the sides of the result image. These are
* filled with the specified background color.
*
* @link https://image.intervention.io/v3/modifying/resizing#padded-image-resizing
* @param int $width
* @param int $height
* @param string $background
* @param string $position
* @throws RuntimeException
* @return ImageInterface
*/
public function pad(
int $width,
int $height,
mixed $background = 'ffffff',
string $position = 'center'
): self;
/**
* This method does the same as pad(), but the original image is also scaled
* up if the target size exceeds the original size.
*
* @link https://image.intervention.io/v3/modifying/resizing#padded-resizing-with-upscaling
* @param int $width
* @param int $height
* @param string $background
* @param string $position
* @throws RuntimeException
* @return ImageInterface
*/
public function contain(
int $width,
int $height,
mixed $background = 'ffffff',
string $position = 'center'
): self;
/**
* Cut out a rectangular part of the current image with given width and
* height at a given position. Define optional x,y offset coordinates
* to move the cutout by the given amount of pixels.
*
* @link https://image.intervention.io/v3/modifying/resizing#crop-image
* @param int $width
* @param int $height
* @param int $offset_x
* @param int $offset_y
* @param mixed $background
* @param string $position
* @throws RuntimeException
* @return ImageInterface
*/
public function crop(
int $width,
int $height,
int $offset_x = 0,
int $offset_y = 0,
mixed $background = 'ffffff',
string $position = 'top-left'
): self;
/**
* Trim the image by removing border areas of similar color within a the given tolerance
*
* @link https://image.intervention.io/v3/modifying/resizing#trim-image
* @param int $tolerance
* @throws RuntimeException
* @throws AnimationException
* @return ImageInterface
*/
public function trim(int $tolerance = 0): self;
/**
* Place another image into the current image instance
*
* @link https://image.intervention.io/v3/modifying/inserting
* @param mixed $element
* @param string $position
* @param int $offset_x
* @param int $offset_y
* @param int $opacity
* @throws RuntimeException
* @return ImageInterface
*/
public function place(
mixed $element,
string $position = 'top-left',
int $offset_x = 0,
int $offset_y = 0,
int $opacity = 100
): self;
/**
* Fill image with given color
*
* If an optional position is specified for the filling process ln the form
* of x and y coordinates, the process is executed as flood fill. This means
* that the color at the specified position is taken as a reference and all
* adjacent pixels are also filled with the filling color.
*
* If no coordinates are specified, the entire image area is filled.
*
* @link https://image.intervention.io/v3/modifying/drawing#fill-images-with-color
* @param mixed $color
* @param null|int $x
* @param null|int $y
* @throws RuntimeException
* @return ImageInterface
*/
public function fill(mixed $color, ?int $x = null, ?int $y = null): self;
/**
* Draw a single pixel at given position defined by the coordinates x and y in a given color.
*
* @link https://image.intervention.io/v3/modifying/drawing#drawing-a-pixel
* @param int $x
* @param int $y
* @param mixed $color
* @throws RuntimeException
* @return ImageInterface
*/
public function drawPixel(int $x, int $y, mixed $color): self;
/**
* Draw a rectangle on the current image
*
* @link https://image.intervention.io/v3/modifying/drawing#drawing-a-rectangle
* @param int $x
* @param int $y
* @param callable|Closure|Rectangle $init
* @throws RuntimeException
* @return ImageInterface
*/
public function drawRectangle(int $x, int $y, callable|Closure|Rectangle $init): self;
/**
* Draw ellipse on the current image
*
* @link https://image.intervention.io/v3/modifying/drawing#drawing-ellipses
* @param int $x
* @param int $y
* @param callable|Closure|Ellipse $init
* @throws RuntimeException
* @return ImageInterface
*/
public function drawEllipse(int $x, int $y, callable|Closure|Ellipse $init): self;
/**
* Draw circle on the current image
*
* @link https://image.intervention.io/v3/modifying/drawing#drawing-a-circle
* @param int $x
* @param int $y
* @param callable|Closure|Circle $init
* @throws RuntimeException
* @return ImageInterface
*/
public function drawCircle(int $x, int $y, callable|Closure|Circle $init): self;
/**
* Draw a polygon on the current image
*
* @link https://image.intervention.io/v3/modifying/drawing#drawing-a-polygon
* @param callable|Closure|Polygon $init
* @throws RuntimeException
* @return ImageInterface
*/
public function drawPolygon(callable|Closure|Polygon $init): self;
/**
* Draw a line on the current image
*
* @link https://image.intervention.io/v3/modifying/drawing#drawing-a-line
* @param callable|Closure|Line $init
* @throws RuntimeException
* @return ImageInterface
*/
public function drawLine(callable|Closure|Line $init): self;
/**
* Draw a bezier curve on the current image
*
* @link https://image.intervention.io/v3/modifying/drawing#draw-bezier-curves
* @param callable|Closure|Bezier $init
* @throws RuntimeException
* @return ImageInterface
*/
public function drawBezier(callable|Closure|Bezier $init): self;
/**
* Encode image to given media (mime) type. If no type is given the image
* will be encoded to the format of the originally read image.
*
* @link https://image.intervention.io/v3/basics/image-output#encode-images-by-media-mime-type
* @param null|string|MediaType $type
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function encodeByMediaType(null|string|MediaType $type = null, mixed ...$options): EncodedImageInterface;
/**
* Encode the image into the format represented by the given extension. If no
* extension is given the image will be encoded to the format of the
* originally read image.
*
* @link https://image.intervention.io/v3/basics/image-output#encode-images-by-file-extension
* @param null|string|FileExtension $extension
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function encodeByExtension(
null|string|FileExtension $extension = null,
mixed ...$options
): EncodedImageInterface;
/**
* Encode the image into the format represented by the given extension of
* the given file path extension is given the image will be encoded to
* the format of the originally read image.
*
* @link https://image.intervention.io/v3/basics/image-output#encode-images-by-file-path
* @param null|string $path
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function encodeByPath(?string $path = null, mixed ...$options): EncodedImageInterface;
/**
* Encode image to JPEG format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-jpeg-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toJpeg(mixed ...$options): EncodedImageInterface;
/**
* Encode image to Jpeg2000 format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-jpeg-2000-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toJpeg2000(mixed ...$options): EncodedImageInterface;
/**
* Encode image to Webp format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-webp-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toWebp(mixed ...$options): EncodedImageInterface;
/**
* Encode image to PNG format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-png-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toPng(mixed ...$options): EncodedImageInterface;
/**
* Encode image to GIF format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-gif-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toGif(mixed ...$options): EncodedImageInterface;
/**
* Encode image to Bitmap format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-windows-bitmap-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toBitmap(mixed ...$options): EncodedImageInterface;
/**
* Encode image to AVIF format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-av1-image-file-format-avif
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toAvif(mixed ...$options): EncodedImageInterface;
/**
* Encode image to TIFF format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-tiff-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toTiff(mixed ...$options): EncodedImageInterface;
/**
* Encode image to HEIC format
*
* @link https://image.intervention.io/v3/basics/image-output#encoding-heic-format
* @param mixed $options
* @throws RuntimeException
* @return EncodedImageInterface
*/
public function toHeic(mixed ...$options): EncodedImageInterface;
}