私はJPEG画像を作成するのに役立つこのコードを持っています.今、私が作成する必要があるのは、画像、PNG JPG、またはそれが何であれ!
いくつかの変更を加えましたが、最終結果は次のとおりです。
function tamano_nuevo_foto($im_or, $ancho_nv, $dir_nv) {
$ext = pathinfo($im_or, PATHINFO_EXTENSION);
$datos = getimagesize($im_or);
$ancho = $datos[0];
$alto = $datos[1];
if ($ancho > $ancho_nv) { //Si la imagen no lelga al máximo no la tocamos.
$prop = $alto / $ancho;
$alto_nv = round($ancho_nv * $prop); //Sacamos la nueva altura
} else {
$ancho_nv = $ancho;
$alto_nv = $alto;
}
$im_nv = imagecreatetruecolor($ancho_nv, $alto_nv);
imagecopyresampled($im_nv, $img, 0, 0, 0, 0, $ancho_nv, $alto_nv, $ancho, $alto);
switch ($ext) {
case 'jpg':
$img = imagecreatefromjpeg($im_or);
break;
case 'jpeg':
$img = imagecreatefromjpeg($im_or);
break;
case 'png':
$img = imagecreatefrompng($im_or);
break;
case 'gif':
$img = imagecreatefromgif($im_or);
break;
default:
$img = imagecreatefromjpeg($im_or);
}
imagedestroy($im_nv);
}
元のコードは次のとおりです。
function tamano_nuevo_foto($im_or, $ancho_nv, $dir_nv) {
$img = imagecreatefromstring($im_or);
$datos = getimagesize($im_or);
$ancho = $datos[0];
$alto = $datos[1];
if ($ancho > $ancho_nv) { //Si la imagen no lelga al máximo no la tocamos.
$prop = $alto / $ancho; /* Calculo la proporcion entre la or y la nv (lo miltiplicamos por mil para evitar problemas con decimales */
$alto_nv = round($ancho_nv * $prop); //Sacamos la nueva altura
} else {
$ancho_nv = $ancho;
$alto_nv = $alto;
}
$im_nv = imagecreatetruecolor($ancho_nv, $alto_nv);
imagecopyresampled($im_nv, $img, 0, 0, 0, 0, $ancho_nv, $alto_nv, $ancho, $alto);
imagejpeg($im_nv, $dir_nv);
imagedestroy($im_nv);
}
関数は次のように作成します。
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetPath = str_replace('//','/',$targetPath);
$targetFile = $targetPath . $_FILES['Filedata']['name'];
tamano_nuevo_foto($tempFile, 800, $targetFile);