GC_Image_Editor_GD::crop()

最后更新于:2021-11-27 23:38:09

GC_Image_Editor_GD::crop( int$src_x, int$src_y, int$src_w, int$src_h, int$dst_w=null, int$dst_h=null, bool$src_abs=false)

Crops Image.

参数

$src_x

(int) (Required) The start x position to crop from.

$src_y

(int) (Required) The start y position to crop from.

$src_w

(int) (Required) The width to crop.

$src_h

(int) (Required) The height to crop.

$dst_w

(int) (Optional) The destination width.

Default value: null

$dst_h

(int) (Optional) The destination height.

Default value: null

$src_abs

(bool) (Optional) If the source crop points are absolute.

Default value: false

响应

(true|GC_Error)

源文件

文件: gc-includes/class-gc-image-editor-gd.php

	public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false ) {
		// If destination width/height isn't specified,
		// use same as width/height from source.
		if ( ! $dst_w ) {
			$dst_w = $src_w;
		}
		if ( ! $dst_h ) {
			$dst_h = $src_h;
		}

		foreach ( array( $src_w, $src_h, $dst_w, $dst_h ) as $value ) {
			if ( ! is_numeric( $value ) || (int) $value <= 0 ) {
				return new GC_Error( 'image_crop_error', __( 'Image crop failed.' ), $this->file );
			}
		}

		$dst = gc_imagecreatetruecolor( (int) $dst_w, (int) $dst_h );

		if ( $src_abs ) {
			$src_w -= $src_x;
			$src_h -= $src_y;
		}

		if ( function_exists( 'imageantialias' ) ) {
			imageantialias( $dst, true );
		}

		imagecopyresampled( $dst, $this->image, 0, 0, (int) $src_x, (int) $src_y, (int) $dst_w, (int) $dst_h, (int) $src_w, (int) $src_h );

		if ( is_gd_image( $dst ) ) {
			imagedestroy( $this->image );
			$this->image = $dst;
			$this->update_size();
			return true;
		}

		return new GC_Error( 'image_crop_error', __( 'Image crop failed.' ), $this->file );
	}