javascript — изменение размера и сжатия загружаемого изображения в стиле Facebook

Facebook изменяет размеры загруженных изображений, если оно выше 2 megapixels, Например, мое изображение 3264x1832, Facebook изменить размер до 2048x1529 Это. Так какой край, если он длинный, изображения уменьшаются до 2048px, Уменьшение измеряется тем, что сокращается другой край. После этого сжатие изображения по размеру уменьшается. Метод осторожен на больших изображениях. Я буду делать метод мой проект MVC 5, как найти C #, JQuery, Javascrip, плагин PHP или API, как этот метод?

1

Решение

Это требует, чтобы GD был установлен на вашем php-сервере, и ожидает, что path/to/temp/image.jpg местоположение загруженного изображения. Вы можете использовать try/catch в случае загрузки неподдерживаемого типа файла или поврежденного изображения.

Вот основной код программы:

$maxWidth = 2048;
$maxHeight = 2048;
$compression = 75;

//Create an image object out of the uploaded file
$sourceImage = imagecreatefromjpeg('path/to/temp/image.jpg');

//Resize the image
$resizedImage = ImageSizeDown($sourceImage, $maxWidth, $maxHeight);

//Save the image as a jpeg to it's new home
imagejpeg($resizedImage, 'path/to/permanent/image.jpg', $compression);

Это дополнительные необходимые функции:

//Function for resizing an image if it's larger than a certain resolution
function ImageSizeDown($image, $maxWidth, $maxHeight) {
$maxAspect = $maxWidth / $maxHeight;
$sourceWidth = imagesx($image);
$sourceHeight = imagesy($image);
$sourceAspect = $sourceWidth / $sourceHeight;
if($sourceWidth > $maxWidth || $sourceHeight > $maxHeight) {
if($maxAspect > $sourceAspect) {
$newWidth = (int)$maxWidth;
$newHeight = (int)($maxWidth / $sourceWidth * $sourceHeight);
}
else {
$newHeight = (int)$maxHeight;
$newWidth = (int)($maxHeight / $sourceHeight * $sourceWidth);
}
$result = TransparentImage($newWidth, $newHeight);
imagesavealpha($image, true);
imagealphablending($image, false);
imagecopyresampled($result, $image, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight);
return $result;
}
else return $image; //Image is already small enough
}

//Handy function for creating a base for most any image stuff, especially PNG
function TransparentImage($x, $y) {
$image = imagecreatetruecolor($x, $y);
imagesavealpha($image, true);
imagealphablending($image, false);
$transparent = imagecolorallocatealpha($image, 200, 200, 200, 127);
imagefill($image, 0, 0, $transparent);
return $image;
}

Я не где-то, где я могу проверить это в данный момент, так что моя математика соотношения сторон может быть транспонирована.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]