私はpngファイルをアップロードするために動作するスクリプトphpを持っていますが、アップロードされたファイルは丸みを帯びた角でいくらかの品質を失います(元のサイズの半分でアップロードされます)。アップロードされたpngファイルを後で花火で編集したい場合は、不明な画像の種類またはファイルと表示されます.
アップロードされた png が $_FILES["poza_a_1"]["type"] == "image/x-png" で認識されないのはなぜですか? 私は使用を余儀なくされました:
if($_FILES["poza_a_1"]["type"] == "image/png"){
私がそれを使用しなかった場合、PNG 画像はアップロードされません。
私のコードは次のとおりです。
if ($_FILES["poza_a_1"]["type"] == "image/jpeg" || $_FILES["poza_a_1"]["type"] == "image/pjpeg" || $_FILES["poza_a_1"]["type"] == "image/gif" || $_FILES["poza_a_1"]["type"] == "image/x-png" || $_FILES["poza_a_1"]["type"] == "image/png" || isset($_POST["nume_a_1"])){
$current_img=$_FILES['poza_a_1']['name'];
$extension = strtolower(substr(strrchr($current_img, '.'), 1));
$new_image = str_replace(" ", "-", strtolower($e_nume));
$nume = ucwords(str_replace("-", " ", $e_nume));
$id_poza = $e_id_poza;
$originalImage = "../temps/".$new_image . "." . $extension;
$cale_poza = "../img/".$new_image."." . $extension;
$action = move_uploaded_file($_FILES["poza_a_1"]['tmp_name'], $originalImage);
//if (move_uploaded_file($_FILES['poza_a']['tmp_name'], $uploadfile_o)) {
//$max_upload_width = 1280;
//$max_upload_height = 900;
//$max_upload_width_th = 168;
//$max_upload_height_th = 130;
if($_FILES["poza_a_1"]["type"] == "image/jpeg" || $_FILES["poza_a_1"]["type"] == "image/pjpeg"){
$image_source = imagecreatefromjpeg($originalImage) ;
}
if($_FILES["poza_a_1"]["type"] == "image/gif"){
$image_source = imagecreatefromgif($originalImage);
}
if($_FILES["poza_a_1"]["type"] == "image/bmp"){
$image_source = imagecreatefromwbmp($originalImage);
}
if($_FILES["poza_a_1"]["type"] == "image/x-png"){
$image_source = imagecreatefrompng($originalImage);
}
if($_FILES["poza_a_1"]["type"] == "image/png"){
$image_source = imagecreatefrompng($originalImage);
}
imagealphablending( $image_source, true );
chmod($cale_poza,0777);
imagejpeg($image_source, $cale_poza,100);
chmod($cale_poza,0777);
//list($image_width, $image_height) = getimagesize($cale_poza);
// $new_width = $image_width;
// $new_height = $image_height;
//$new_image = imagecreatetruecolor($image_width, $image_height);
//$image_source = imagecreatefromjpeg($cale_poza);
//imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
//$new_width, $new_height,
//imagejpeg($new_image, $cale_poza, 100); // save
// imagedestroy($new_image);
$old = getcwd(); // Save the current directory
$path_to_file = '../temps/';
chdir($path_to_file);
$originalImage_del = str_replace ("../temps/", "", $originalImage);
unlink($originalImage_del);
chdir($old); // Restore the old working directory
}
OK、私は move_uploaded_file を使用して解決し、... 間の残りのコードを削除します:
$originalImage = "../temps/".$new_image . "." . $extension;
$cale_poza = "../img/".$new_image."." . $extension;
//$destination = "../img/".strtolower($e_nume).'/'.$new_image."-".$y."-".$e_id_poza."_th." . $extension;
//$action = move_uploaded_file($_FILES["poza_a_1"]['tmp_name'], $originalImage);
chmod($cale_poza,0777);
move_uploaded_file($_FILES["poza_a_1"]["tmp_name"], $cale_poza);