[Tút] Upload ảnh và tạo Thumbnail với PHP

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi m47, 16/7/05.

  1. m47

    m47 Dragon Quest

    Tham gia ngày:
    6/1/04
    Bài viết:
    1,365
    Nơi ở:
    anywhere but Home
    Sau đây là hướng dẫn viết "hệ thống" Upload ảnh và tạo thumbNail ! Dùng PHP
    Thấy bà con chửi bới quá nên tui cũng đóng góp chút chút !
    -----------------------------------------------------------------------
    Đầu tiên là bên fía HTML FORM ! Muốn tạo một form upload ta dùng tag "file" . Cụ thể như sau :
    <INPUT NAME="userfile" TYPE="file">
    Ở đây ta đặt cho thẻ cái tên là : userfile (đọc là "diu sơ phai" ) :cool:
    Muốn úp-loát file được , phải thêm vào thẻ form cái này :
    ENCTYPE="multipart/form-data"

    Xong xuôi !
    -----------------------------------------
    Bây giờ chuyển sang phần server script !
    File của chúng ta khi truyền đến server sẽ mang tên "userfile" tên biến PHP là $userfile <<-- cái lày ai cũng biết !

    Đi kèm theo file tất nhiên là tên file tất nhiên là dung lượng , tên file, dạng file . PHP hỗ trợ việc tạo sẵn các biến tương ứng : ví dụ cụ thể : ở đây sẽ có các biến được tạo sẵn sau : $userfile_name , $userfile_size , $userfile_type .....
    Ngoài ra PHP cũng hổ trợ cách thức dùng mảng hai chiều, VD : $_FILE["userfile"]["name"] .. tuy nhiên xét thấy dùng cái đó gõ dài mỏi tay cho nên thôi ..
    ...
    Muốn upload một file thì hết sức đơn giản ! Dùng hàm chuẩn : move_uploaded_file ($userfile , $add) ; (đọc là "mu úp loát đít phai" )
    Với $add là đường dẫn tương đối đến thư mục mà ta muốn lưu file ( bạn có thể chèn thêm tên file phía sau , vì thế ta có thể thay đổi tên file bằng cách đưa tên mới của file vào đường dẫn !)
    Ở đây chúng ta chỉ cho Úp loát file ảnh thuộc dạng JPEG và GIF --> sử dụng lệnh rẻ nhánh như sau :
    if (!($userfile_type =="image/pjpeg" OR $userfile_type=="image/gif"))
    {
    echo "Your uploaded file must be of JPG or GIF. Other file types are not allowed<BR>";
    exit;
    }
    else
    {
    // some code will be here ! But I won't explain untill tomorow
    }

    -------
    Rùi ! Bà chị réo , đi chơi đã .... mai post tiếp ha !! Bye ha !! Bye bye bye bye bye bye ........... :;)
    Copyright by m47
     
  2. Baby Arthas

    Baby Arthas Dragon Quest

    Tham gia ngày:
    25/10/03
    Bài viết:
    1,444
    Nơi ở:
    London
    :D Ko biết phải ko ( ko nhớ chính xác lắm ) cái này có trong cuốn PHP và MySQL phải ko nhỉ :D ??? Dù sao thì mấy cái này cũng ko cần phải pin !

    Thanks - Baby Arthas !!!
     
  3. m47

    m47 Dragon Quest

    Tham gia ngày:
    6/1/04
    Bài viết:
    1,365
    Nơi ở:
    anywhere but Home
    Eh ! không thấy dòng Copyright by m47 à ! Đồ hãm tài !
    Đừng có nghĩ rằng ai cũng kém như ông ! Hiểu chưa !
    Tui ko tin là ông đã từng đọc qua một quyển sách PHP nào để thấy cái này quen quen ! Mọi người có thể tưởng ông giỏi chớ tui thì có thể dễ dàng thấy là ông chả có cái dek gì hết ngoài cái đầu giỏi .... tưởng bở .... :wink: Tui định im nhưng mà .... ghét quá !!! :D
    Tui ko biết là sách PHP nào có bài này ! Sách tui học ko có ! Cái này là do tui viết ! Có tham khảo một điểm về hàm ImageGif dùng hai tham số tại http://plus2net.com ! Do trong sách học của tui thiếu xót nên tui không biết là còn một tham số tuỳ chọn phía sau <<<-- Ông hiểu những gì tui nói không ! ::)
    Tui sẽ nêu rõ điều đó bên dưới !!!!
     
  4. m47

    m47 Dragon Quest

    Tham gia ngày:
    6/1/04
    Bài viết:
    1,365
    Nơi ở:
    anywhere but Home
    http://www.apolon.5gigs.com/UPtest/addimg.php <<-- bữa trước quên mất ! Mọi người có thể test ở đây !
    ////////////
    Tiếp theo bữa trước !
    Vấn đề ở đây là tạo thumbnail !!!!!
    bạn có thể dùng các hàm đồ họa có sẵn trong thư viện GD của PHP !!
    Vấn đề ở đây là làm sao để xác định kích thước của thumbnail !!
    Khi tạo thumbnail thì bạn phải cho sẵn chiều dài và rộng tối đa của thumbnail !

    Bên cạnh đó ! phải biết được chiều dài và rộng của hình gốc !
    PHP hỗ trợ hàm sau để làm điều đó :
    GetImageSize($userfile); <<-- giá trị trả về là một mảng với hai phần tử
    Vi' du :
    $size = GetImageSize($userfile);
    echo $size[0] ; // chiều dài ( width)
    echo $size[1] ; // cao ! (height)


    ta sẽ cho sẵn chiều dài và rộng MAX của Thumb !
    ví dụ :
    $max_h = 120; // chiều cao tối đa của thumb
    $max_w = 90 ; // ----- dài ---------------

    Tất nhiên là bưóc tiếp theo sẽ là tính tỷ lệ hợp lý cho thumb nếu ảnh gốc có diện tích lớn hơn MAX của Thumb !
    Bạn xem đoạn code này và tự hiểu ! Khỏi cần nói nhiều :D
    Lưu ý :

    $max_h = 120;
    $max_w = 90 ;
    // Using GetImageSize function
    $size= GetImageSize ($userfile);
    // lưu ý $n_width và $n_height là chiều dài và rộng của thumb
    if ( $size[0] > $max_w && $size[1] > $max_h )
    {
    if ( $size[0] > $size[1] )
    {
    $n_width = $max_w ;
    $n_height = ( $max_w * $size[1] ) / $size[0];
    }
    elseif ( $size[0] < $size[1])
    {
    $n_height = $max_h ;
    $n_width = ( $max_h * $size[0]) / $size[1];

    }

    }

    elseif ( $size[0] > $max_w)
    {
    $n_width= $max_w ;
    $n_height = ( $max_w * $size[1]) / $size[0];
    }
    elseif ( $size[1] > $max_h)
    {
    $n_height = $max_h ;
    $n_width = ( $max_h * $size[0]) / $size[1];
    }

    else
    {
    $n_height = $size[1];
    $n_width = $size[0];
    }


    (muốn biết làm thế nào để tạo thumbnail và lưu file , xem hồi sau sẽ rõ :;) )
     
  5. Baby Arthas

    Baby Arthas Dragon Quest

    Tham gia ngày:
    25/10/03
    Bài viết:
    1,444
    Nơi ở:
    London
    Mày xóa bải tự nhiên nhỉ ? Nhóc con nói ko lại thì xóa , lock topic . Thằng này ngu mà chơi bẩn thiệt .
     
  6. m47

    m47 Dragon Quest

    Tham gia ngày:
    6/1/04
    Bài viết:
    1,365
    Nơi ở:
    anywhere but Home
    Cái gì mà nói không lại ;;) Tại tui không thích cãi nhau nữa ! Trước giờ thàng này chưa cãi nhau thua ai cả !!!Nếu thích thì mình bỏ lại mấy bài đó vào vị trí cũ !
    Tui có ko có thoái quen sưu tập bài của người khác cho dù có chú thích đi nữa ! Bài gì tui viết đều là của tui !
    Không có LTV nào không tham khảo cả ! Nhưng nên nhớ là tham khảo là tham khảo ! Chép là chép !
     
  7. Baby Arthas

    Baby Arthas Dragon Quest

    Tham gia ngày:
    25/10/03
    Bài viết:
    1,444
    Nơi ở:
    London
    Tao viết ko biết bao nhiều lời mà mày chỉ đọc được từng đó thôi à ? Mày có biết việc bản quyền là rất quan trọng ko ? tham khảo phải ghi rõ đoạn nào là tham khảo và trong phần About ( project nào ko có cái này thì dẹp đi ) là tham khảo nữa . Còn ko thì phần mềm của mày được đánh giá 0 điểm biết ko ? . Ngu tao nói cho nghe ko muốn lại xóa bài rồi ra vẻ ko thích cãi => nhóc con .
     
  8. m47

    m47 Dragon Quest

    Tham gia ngày:
    6/1/04
    Bài viết:
    1,365
    Nơi ở:
    anywhere but Home
    Ngu vãi ! Người ta đã post đến đoạn đó đâu :o
    Người ta đã nói là tham khảo cái hàm ImagGif !! Hai bài trên kia làm gì có nhắc đến
    Bạn B.A ko đọc mà đã thấy bài của tui "quen quen " ;;) Thua luôn ! Chắc giỏi quá nên không cần đọc đã đoán ra code ! Ấy vậy mà vẫn bảo con trỏ "hkó nhất " ;;)
     

Chia sẻ trang này