我通常使用此代码上传图像,并且可以正常工作,但是几天前,它开始在新服务器上给我带来问题,当加载图像(尤其是jpeg图像或来自iPhone或Mac的图像)时,它加载的图像是全黑。 正确更改尺寸,但图像为黑色。
这是我在多产的学校和个人中使用php上传图像的代码,以前没有问题。 所以我不知道是否是因为PHP版本的更改
<?php
$exp = explode(".", $_FILES["image"]["name"]);
if($_FILES['image']['name'] != ""){ // El campo foto contiene una imagen...
// Primero, hay que validar que se trata de un JPG/GIF/PNG
$allowedExts = array("jpg", "jpeg", "gif", "png", "JPG", "GIF", "PNG");
$extension = end($exp);
if ((($_FILES["image"]["type"] == "image/gif")
|| ($_FILES["image"]["type"] == "image/jpeg")
|| ($_FILES["image"]["type"] == "image/png")
|| ($_FILES["image"]["type"] == "image/pjpeg"))
&& in_array($extension, $allowedExts)) {
// el archivo es un JPG/GIF/PNG, entonces...
$extension = end($exp);
$foto = substr(md5(uniqid(rand())),0,10).".".$extension;
$directorio = "CLIENTES"; // directorio de tu elección
// almacenar imagen en el servidor
move_uploaded_file($_FILES['image']['tmp_name'], $directorio.'/'.$foto);
$resFoto = 'res_'.$foto;
resizeImagen($directorio.'/', $foto, 500, 500,$resFoto,$extension);
unlink($directorio.'/'.$foto);
$_SESSION['ERROR']="Se cargo correctamente !!!";
$OK="1";
} else { // El archivo no es JPG/GIF/PNG
$OK="0";
$_SESSION['ERROR']="No tiene un formato compatible !!!";
}
} else { // El campo foto NO contiene una imagen
$OK="0";
$_SESSION['ERROR']="No se selecciono archivo!!!";
}
####
## Función para redimencionar las imágenes
## utilizando las liberías de GD de PHP
####
function resizeImagen($ruta, $nombre, $alto, $ancho,$nombreN,$extension){
$rutaImagenOriginal = $ruta.$nombre;
if($extension == 'GIF' || $extension == 'gif'){
$img_original = imagecreatefromgif($rutaImagenOriginal);
}
if($extension == 'jpg' || $extension == 'JPG'){
$img_original = imagecreatefromjpeg($rutaImagenOriginal);
}
if($extension == 'png' || $extension == 'PNG'){
$img_original = imagecreatefrompng($rutaImagenOriginal);
}
$max_ancho = $ancho;
$max_alto = $alto;
list($ancho,$alto)=getimagesize($rutaImagenOriginal);
$x_ratio = $max_ancho / $ancho;
$y_ratio = $max_alto / $alto;
if( ($ancho <= $max_ancho) && ($alto <= $max_alto) ){//Si ancho
$ancho_final = $ancho;
$alto_final = $alto;
} elseif (($x_ratio * $alto) < $max_alto){
$alto_final = ceil($x_ratio * $alto);
$ancho_final = $max_ancho;
} else{
$ancho_final = ceil($y_ratio * $ancho);
$alto_final = $max_alto;
}
$tmp=imagecreatetruecolor($ancho_final,$alto_final);
imagecopyresampled($tmp,$img_original,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto);
imagedestroy($img_original);
$calidad=70;
imagejpeg($tmp,$ruta.$nombreN,$calidad);
}
$img=$directorio;
$img.="/";
$img.=$resFoto;
?>
我唯一的错误是加载的图像完全是黑色的。
答案 0 :(得分:0)
进行此类工作时遇到的相同问题。我正在使用此类:
library(dplyr)
bind_rows(purrr::map(L, bind_rows), .id = "id") %>%
mutate(id = match(id, unique(id)))
所以我评论了resize1()函数并创建了新的resize()函数。请检查它是否还能帮助您。