Redimensionar изображение, которое приходит из-за POST в PHP

Как я могу redimensionar изображение, которое приходит ко мне из-за POST формуляра??

$rutaFichero = '/img/' . basename($_FILES['imagenNoticia']['name']);

if (move_uploaded_file($_FILES['imagenNoticia']['tmp_name'], $rutaFichero))
        {
            $imagenOriginal = imagecreatefromjpeg($rutaFichero);
            $maxAncho = 500;
            $maxAlto = 500;
            list($ancho, $alto) = getimagesize($rutaFichero);
            $xRatio = $maxAncho / $ancho;
            $yRatio = $maxAlto / $alto;

            if(($ancho <= $maxAncho) && ($alto <= $maxAlto))
            {
                $anchoFinal = $ancho;
                $altoFinal = $alto;
            }
            else if(($xRatio * $alto) < $maxAlto)
            {
                $altoFinal = ceil($xRatio * $alto);
                $anchoFinal = $maxAncho;
            }
            else
            {
                $anchoFinal = ceil($yRatio * $ancho);
                $altoFinal = $maxAlto;
            }

            //$rsr_org = imagecreatefromjpeg("image.jpg");
            //$tmp = imagescale($imagenOriginal, $anchoFinal, $altoFinal,  IMG_BICUBIC_FIXED);
            //imagejpeg($tmp, basename($_FILES['imagenNoticia']['name']);

            $tmp = imagecreatetruecolor($anchoFinal, $altoFinal);
            $resultado = imagecopyresampled($tmp, $imagenOriginal, 0, 0, 0, 0, $anchoFinal, $altoFinal, $ancho, $alto);
            imagedestroy($imagenOriginal);
        }

Я использовал этот код, но не я redimensiona изображение. Какое-то возможное решение?, Или какой-то класс, который функционировал бы с версиями php, предыдущих 5.3? Спасибо

4
задан 16.06.2016, 10:39
2 ответа

Я нашел это, что может помогать тебе (Я думаю, что проблема, которая у тебя есть, находится в коэффициенте):

$fn = $_FILES['imagenNoticia']['name'];
$size = getimagesize($fn);
$ratio = $size[0]/$size[1]; // width/height
if( $ratio > 1) {
    $width = 500;
    $height = 500/$ratio;
}
else {
    $width = 500*$ratio;
    $height = 500;
}
$src = imagecreatefromstring(file_get_contents($fn));
$dst = imagecreatetruecolor($width,$height);
imagecopyresampled($dst,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
imagedestroy($src);
imagepng($dst,$target_filename_here); // adjust format as needed
imagedestroy($dst);
1
ответ дан 24.11.2019, 14:09
  • 1
    Мне встречает ошибка последних 4 функций: " supplied argument is not в valid Image resource". Но я продолжаю быть попробованным решать это с твоим кодом, Спасибо! –   15.06.2016, 13:25
  • 2
    Измени target_filename_here по имени изображения –  Miquel Coll 15.06.2016, 13:27
  • 3
    Если, это уже это изменило, я думаю, что уже какова проблема, это помещало все внутри: " if (move_uploaded_file (" я это иду в sacr снаружи и думаю, что оно было бы должно функционировать с твоим кодом –   15.06.2016, 13:29
  • 4
    Останься, не функционируя, я продолжу тестировать кредит, если я это получаю и могу помещать здесь soluci и # 243; n –   15.06.2016, 14:13
  • 5
    С кодом, который ты переместил меня, оно функционировало, у него была ошибка в tama и # 241; или изображения, которое весило 7mb и imagepng () он давал ошибку. Спасибо. –   17.06.2016, 14:18

Я оставляю одну тебе funciГіn, который использую я, если он подает тебе

function redimensionarJPEG ($origen, $destino, $ancho_max, $alto_max, $fijar) {

$info_imagen= getimagesize($origen);
$ancho=$info_imagen[0];
$alto=$info_imagen[1];
if ($ancho>=$alto)
{
    $nuevo_alto= round($alto * $ancho_max / $ancho,0);
    $nuevo_ancho=$ancho_max;
}
else
{
    $nuevo_ancho= round($ancho * $alto_max / $alto,0);
    $nuevo_alto=$alto_max;
}
switch ($fijar)
{
    case "ancho":
        $nuevo_alto= round($alto * $ancho_max / $ancho,0);
        $nuevo_ancho=$ancho_max;
        break;
    case "alto":
        $nuevo_ancho= round($ancho * $alto_max / $alto,0);
        $nuevo_alto=$alto_max;
        break;
    default:
        $nuevo_ancho=$nuevo_ancho;
        $nuevo_alto=$nuevo_alto;
        break;
}
$imagen_nueva= imagecreatetruecolor($nuevo_ancho,$nuevo_alto);
$imagen_vieja= imagecreatefromjpeg($origen);
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0,$nuevo_ancho, $nuevo_alto, $ancho, $alto);
imagejpeg($imagen_nueva,$destino);
imagedestroy($imagen_nueva);
imagedestroy($imagen_vieja);
}
0
ответ дан 24.11.2019, 14:09

Теги

Похожие вопросы