繁体   English   中英

使用PHP调整图像大小时出错-图像显示为黑色

[英]Error to resize a image with PHP - image appear in black

我尝试调整图像大小并保存,当图像大于420(宽度和高度)时,图像应缩小,但显示为黑色。 这里有2个函数borrar_imagenes和subir_imagen。 可能是什么问题呢?? 为什么图像以黑色保存?

<?php


function borrar_imagenes($ruta,$extension){


    switch($extension){

        case ".jpg":
            if(file_exists($ruta.".png"))
                unlink($ruta.".png");
            if(file_exists($ruta."gif"))
                unlink($ruta.".gif");
            break;
        case ".gif":
            if(file_exists($ruta.".png"))
                unlink($ruta.".png");
            if(file_exists($ruta."jpg"))
                unlink($ruta.".jpg");
            break;
        case ".png":
            if(file_exists($ruta.".jpg"))
                unlink($ruta.".jpg");
            if(file_exists($ruta."gif"))
                unlink($ruta.".gif");
            break;

    }


}

function subir_imagen($tipo,$imagen,$email)
{
    if(strstr($tipo,"image"))
    {   

        if(strstr($tipo,"jpeg")){

            $extension = ".jpg";
        }else if(strstr($tipo,"gif")){
            $extension = ".gif";
        }else if(strstr($tipo,"png")){
            $extension = ".png";
        }
        $ancho_real = 420;
        $alto_real = 420;

        $tamaño_imagen = getimagesize($imagen);
        $ancho_imagen = $tamaño_imagen[0];
        $alto_imagen = $tamaño_imagen[1];

;


        if($ancho_imagen > $ancho_real || $alto_imagen > $alto_real){



             $imagen_reajustada = imagecreatetruecolor($ancho_real,$alto_real);



             switch($extension){

                case ".jpg":
                    $imagen_final = imagecreatefromjpeg($imagen);
                    $nombre_img="../img/fotos/".$email;
                    $nombre_img_ext="../img/fotos/".$email.$extension;
                    imagecopyresampled($imagen_reajustada,$imagen_final,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho_imagen,$alto_imagen);

                    imagejpeg($imagen_reajustada,$nombre_img_ext,100);
                    borrar_imagenes($nombre_img,".jpg");

                    break;

                case ".gif":
                    $imagen_final = imagecreatefromgif($imagen);
                    $nombre_img="../img/fotos/".$email;
                    $nombre_img_ext="../img/fotos/".$email.$extension;
                    imagecopyresampled($imagen_reajustada,$imagen_final,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho_imagen,$alto_imagen);

                    imagegif($imagen_reajustada,$nombre_img_ext,100);
                    borrar_imagenes($nombre_img,".gif");

                    break;

                case ".png":
                    $imagen_final = imagecreatefrompng($imagen);
                    $nombre_img="../img/fotos/".$email;
                    $nombre_img_ext="../img/fotos/".$email.$extension;
                    imagecopyresampled($imagen_reajustada,$imagen_final,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho_imagen,$alto_imagen);

                    imagepng($imagen_reajustada,$nombre_img_ext);
                    borrar_imagenes($nombre_img,".png");

                    break;
             }//switch





        }else{
            $destino = "../img/fotos/".$email.$extension;
            move_uploaded_file($imagen,$destino) or die("No se pudo subir la imagen al servidor");
            borrar_imagenes("../img/fotos/".$email,$extension);
        }

        $imagen = $email.$extension;
        return $imagen;

    }else{
        return false;
    }


}

?>

当原始图像导入失败时,图像通常以黑色保存-即每个像素的红色,绿色,蓝色的值为0,0,0。 检查文件位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM