Media: Fix admin image cropping calculations.
The admin image editor crop function introduced rounding errors by using a scaled image to calculate values. Fix uses the image at 100% scale for calculations. Also avoid recalculating selection when the selection position is changed, and prevent incorrect values after scaling or restoration. Previously committed in [58456] and reverted in [58571]. The revert was due to a misattributed test failure. Props Jossnaz, johnillo, shailu25, rachelbaker, sudipatel007, joedolson, kevin940726 , andrewserong, hmbashar. Fixes #32282. Built from https://develop.svn.wordpress.org/trunk@58915 git-svn-id: http://core.svn.wordpress.org/trunk@58311 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -735,10 +735,10 @@ function image_edit_apply_changes( $image, $changes ) {
|
||||
$w = $size['width'];
|
||||
$h = $size['height'];
|
||||
|
||||
$scale = 1 / _image_get_preview_ratio( $w, $h ); // Discard preview scaling.
|
||||
$scale = isset( $sel->r ) ? $sel->r : 1 / _image_get_preview_ratio( $w, $h ); // Discard preview scaling.
|
||||
$image->crop( (int) ( $sel->x * $scale ), (int) ( $sel->y * $scale ), (int) ( $sel->w * $scale ), (int) ( $sel->h * $scale ) );
|
||||
} else {
|
||||
$scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // Discard preview scaling.
|
||||
$scale = isset( $sel->r ) ? $sel->r : 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // Discard preview scaling.
|
||||
$image = _crop_image_resource( $image, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale );
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user