2017-01-20 3 views
0

У меня есть функция, которая автоматически обрезает изображение после загрузки ширины: 800 пикселей высота: 534 пикселей. Но теперь я хочу изменить ширину: 800 пикселей и высоту: (на основе загрузки исходного файла), и я не знаю, что мне нужно изменить в коде.

здесь мой код формы в blog.phpИзменение размера изображения в зависимости от высоты картинки php

<form method=POST action=$aksi?module=blog&act=input class='form-horizontal' enctype='multipart/form-data'> 
    <div class='form-group'> 
     <label for='produkImageUpload'>Image *:</label> 
     <div class='input-group'> 
      <input type='file' multiple='' name='fupload'> 
     </div> 
     <button type='submit' class='btn btn-success'><i class='fa fa-floppy-o'></i>&nbsp;Save</button> 
    </div> 
</form> 

и здесь action.php (действие после загрузки)

include "../../config/upload.php"; 

$ukuran_maksimal  = 3000000; 
$acak     = rand(0000,9999); 
$lebar     = 800; 
$tinggi     = 534; 

$id_kategori   = $_POST['id_kategori_blog']; 
$folder     = "images/blog/$id_kategori/"; 
$lokasi_file   = $_FILES['fupload']['tmp_name']; 
$tipe_file    = $_FILES['fupload']['type']; 
$nama_file    = $_FILES['fupload']['name']; 
$ukuran_file   = $_FILES['fupload']['size']; 
$nama_file    = str_replace(' ', '_', $nama_file); 
$nama_file    = $acak.$nama_file; 

upload_blog($nama_file,$folder,$lokasi_file,$lebar,$tinggi); 
mysql_query("INSERT INTO blog(id_kategori_blog, gambar) VALUES('$_POST[id_kategori_blog]', '$nama_file')"); 
echo "<script>window.alert('Upload image succes'); 
window.location=('../../main.php?module=blog')</script>"; 

и здесь upload.php (функция)

function upload_blog($nama_file,$folder,$lokasi_file,$lebar,$tinggi) 
{ 
    $nama_folder = "../../../$folder/"; 
    list($lebar_asli, $tinggi_asli, $source_type) = getimagesize($lokasi_file); 
    $gambar_asli = imagecreatefromjpeg($lokasi_file); 
    $ukuran_asli = $lebar_asli/$tinggi_asli; 
    $ukuran = $lebar/$tinggi; 
    if ($ukuran_asli > $ukuran) { 
     $tinggi_sementara = $tinggi; 
     $lebar_sementara = (int) ($tinggi * $ukuran_asli); 
    } else { 
     /*jika gambar sama atau lebih tinggi*/ 
     $lebar_sementara = $lebar; 
     $tinggi_sementara = (int) ($lebar/$ukuran_asli); 
    } 
    /*rubah ukuran gambar ke ukuran sementara*/ 
    $gambar_sementara = imagecreatetruecolor($lebar_sementara, $tinggi_sementara); 
    imagecopyresampled($gambar_sementara,$gambar_asli,0, 0,0, 0,$lebar_sementara, $tinggi_sementara,$lebar_asli, $tinggi_asli); 
    /*Copy cropped region from temporary image into the desired GD image*/ 
    $x_absis = ($lebar_sementara - $lebar)/2; 
    $y_absis = ($tinggi_sementara - $tinggi)/2; 
    $gambar_akhir = imagecreatetruecolor($lebar, $tinggi); 
    imagecopy($gambar_akhir,$gambar_sementara,0, 0,$x_absis, $y_absis,$lebar, $tinggi); 
    imagejpeg($gambar_akhir,$nama_folder.$nama_file); 
    imagedestroy($gambar_akhir); 
} 

помогите мне решить проблему. спасибо

ответ

1

Попробуйте это:

$file = $_FILES["files"]['tmp_name']; 
list($width, $height) = getimagesize($file); 

$ ширина содержит ширину файла и $ высоты содержат высоту файла. Используйте их в своем коде как факторы изменения размера.

Или

$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]); 
$image_width = $image_info[0]; // width of image 
$image_height = $image_info[1]; // height of image 
+0

вау это работает! Большое вам спасибо – Nisa

+0

Звучит здорово :) –