kopia lustrzana https://github.com/friendica/friendica
Porównaj commity
2 Commity
2df67fef7e
...
a20b876d67
Autor | SHA1 | Data |
---|---|---|
Matthew Exon | a20b876d67 | |
Matthew Exon | c5b8abcaf0 |
|
@ -591,6 +591,9 @@ class Image
|
||||||
if (!$this->isValid()) {
|
if (!$this->isValid()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ($dest_width <= 0 || $dest_height <= 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->isImagick()) {
|
if ($this->isImagick()) {
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -418,19 +418,19 @@ class Images
|
||||||
|
|
||||||
if ((($height * 9) / 16) > $width) {
|
if ((($height * 9) / 16) > $width) {
|
||||||
$dest_width = $max;
|
$dest_width = $max;
|
||||||
$dest_height = intval(($height * $max) / $width);
|
$dest_height = intval(ceil(($height * $max) / $width));
|
||||||
} elseif ($width > $height) {
|
} elseif ($width > $height) {
|
||||||
// else constrain both dimensions
|
// else constrain both dimensions
|
||||||
$dest_width = $max;
|
$dest_width = $max;
|
||||||
$dest_height = intval(($height * $max) / $width);
|
$dest_height = intval(ceil(($height * $max) / $width));
|
||||||
} else {
|
} else {
|
||||||
$dest_width = intval(($width * $max) / $height);
|
$dest_width = intval(ceil(($width * $max) / $height));
|
||||||
$dest_height = $max;
|
$dest_height = $max;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($width > $max) {
|
if ($width > $max) {
|
||||||
$dest_width = $max;
|
$dest_width = $max;
|
||||||
$dest_height = intval(($height * $max) / $width);
|
$dest_height = intval(ceil(($height * $max) / $width));
|
||||||
} else {
|
} else {
|
||||||
if ($height > $max) {
|
if ($height > $max) {
|
||||||
// very tall image (greater than 16:9)
|
// very tall image (greater than 16:9)
|
||||||
|
@ -440,7 +440,7 @@ class Images
|
||||||
$dest_width = $width;
|
$dest_width = $width;
|
||||||
$dest_height = $height;
|
$dest_height = $height;
|
||||||
} else {
|
} else {
|
||||||
$dest_width = intval(($width * $max) / $height);
|
$dest_width = intval(ceil(($width * $max) / $height));
|
||||||
$dest_height = $max;
|
$dest_height = $max;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -96,4 +96,104 @@ class ImagesTest extends MockedTest
|
||||||
|
|
||||||
self::assertArraySubset($assertion, Images::getInfoFromURL($url));
|
self::assertArraySubset($assertion, Images::getInfoFromURL($url));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function dataScalingDimensions()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'landscape' => [
|
||||||
|
'width' => 640,
|
||||||
|
'height' => 480,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 320,
|
||||||
|
'height' => 240,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'wide_landscape' => [
|
||||||
|
'width' => 640,
|
||||||
|
'height' => 120,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 320,
|
||||||
|
'height' => 60,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'landscape_round_up' => [
|
||||||
|
'width' => 640,
|
||||||
|
'height' => 479,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 320,
|
||||||
|
'height' => 240,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'landscape_zero_height' => [
|
||||||
|
'width' => 640,
|
||||||
|
'height' => 1,
|
||||||
|
'max' => 160,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 160,
|
||||||
|
'height' => 1,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'portrait' => [
|
||||||
|
'width' => 480,
|
||||||
|
'height' => 640,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 240,
|
||||||
|
'height' => 320,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
// For portrait with aspect ratio <= 16:9, constrain height
|
||||||
|
'portrait_16_9' => [
|
||||||
|
'width' => 1080,
|
||||||
|
'height' => 1920,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 180,
|
||||||
|
'height' => 320,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
// For portrait with aspect ratio > 16:9, constrain width
|
||||||
|
'portrait_over_16_9_too_wide' => [
|
||||||
|
'width' => 1080,
|
||||||
|
'height' => 1921,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 320,
|
||||||
|
'height' => 570,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
// For portrait with aspect ratio > 16:9, constrain width
|
||||||
|
'portrait_over_16_9_not_too_wide' => [
|
||||||
|
'width' => 1080,
|
||||||
|
'height' => 1921,
|
||||||
|
'max' => 1080,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 1080,
|
||||||
|
'height' => 1921,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'portrait_round_up' => [
|
||||||
|
'width' => 479,
|
||||||
|
'height' => 640,
|
||||||
|
'max' => 320,
|
||||||
|
'assertion' => [
|
||||||
|
'width' => 240,
|
||||||
|
'height' => 320,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the Images::getScalingDimensions() method
|
||||||
|
*
|
||||||
|
* @dataProvider dataScalingDimensions
|
||||||
|
*/
|
||||||
|
public function testGetScalingDimensions(int $width, int $height, int $max, array $assertion)
|
||||||
|
{
|
||||||
|
self::assertArraySubset($assertion, Images::getScalingDimensions($width, $height, $max));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue