Intereting Posts
Время ожидания PHP fopen? Как добавить пользовательские правила валидации при использовании проверки формы запроса в Laravel 5 Как вставить INNER JOIN 3 таблицы с помощью CodeIgniter Как полностью отключить кеширование в CakePHP? php print integer в словах Фоновый процесс PHP все еще влияет на загрузку страницы Безопасное соединение PHP с сеансами WSDL прерывается после обновления сертификата сервера Вызовите 1 вид в Codeigniter, но поделитесь заголовком / нижним колонтитулом между всеми представлениями? Отправить форму и передать значения с помощью ajax PHP: чтение config.ini для массива с файлом () SIGCHILD не обнаруживает сигнал, когда умирает детский процесс Как загрузить фотографию в конкретный альбом, а если нет, создайте этот альбом? Хотите добавить столбец, но класс миграции не найден даже Он существует Есть ли способ сделать saveAll () удалить посторонние объекты? PHP: форматирование даты из mySQL только для даты

Проблема с кадрированием изображения из базы данных mysql с использованием PHP? Изображение отображается черным?

Im имеет странную проблему, получая / обрезая меньшую версию исходного изображения из базы данных mysql. Вид нового для этого и нужна помощь.

У меня есть сценарий, который загружает изображение в базу данных (исходное изображение), а также меньшее, обрезанное изображение, которое будет использоваться в качестве изображения профиля и тому подобного. Вот этот код:

if(isset($_FILES["file"]["type"])) { $validextensions = array("jpeg", "jpg", "png"); $maxsize = 99999999; $temporary = explode(".", $_FILES["file"]["name"]); $file_extension = end($temporary); if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg") ) && ($_FILES["file"]["size"] < $maxsize)//Approx. 100kb files can be uploaded. && in_array($file_extension, $validextensions)) { $size = getimagesize($_FILES['file']['tmp_name']); $type = $size['mime']; $imgfp = fopen($_FILES['file']['tmp_name'], 'rb'); $size = $size[3]; $name = $_FILES['file']['name']; $sql = new mysqli("localhost","username","password","sqlserver"); $imgfp64 = base64_encode(stream_get_contents($imgfp)); $update = "UPDATE sqlserver.imageblob set image='".$imgfp64."', image_type='".$type."', image_name='".$name."', image_size='".$size."' where user_id=".$account['id']; $sql->query($update); 

Это та часть, где происходит масштабирование:

 //small image $w=50;$h=50; list($width, $height) = getimagesize($_FILES['file']['tmp_name']); $r = $width / $height; if ($w/$h > $r) { $newwidth = $h*$r; $newheight = $h; } else { $newheight = $w/$r; $newwidth = $w; } $src = imagecreatefromjpeg($_FILES['file']['tmp_name']); $dst = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); ob_start(); imagejpeg($dst,null); $dst=ob_get_clean(); $dst = base64_encode($dst); $update2 = "UPDATE sqlserver.imageblob set chatimage='".$dst."' where user_id=".$account['id']; $sql->query($update2); 

И вот результат только с некоторыми изображениями –

введите описание изображения здесь

Оригинал не черный. Я читаю этот пост PHP: черное изображение при обрезке с использованием php и думаю, что скрипт может быть обрезан за пределами изображения. Что я могу изменить в своем коде для смягчения этого?

Как я могу сделать его масштабировать и обрезать изображение с изображения не снаружи?