Quá trình xử lý ảnh thumbnail với PHP
Số trang: 6
Loại file: pdf
Dung lượng: 156.73 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Quản Trị Mạng - Về bản chất, có rất nhiều website lưu trữ những thư viện ảnh riêng biệt và kiểu thiết kế dùng chung, tất cả được “nhúng” trong trang đi kèm với những ảnh thumbnail, mục đích của việc làm này là khi người sử dụng nhấn vào mỗi ảnh thumbnail thì website sẽ hiển thị ảnh gốc với kích thước lớn hơn. Chúng ta có thể dễ dàng thực hiện quá trình này bằng cách sử dụng thẻ HTML anchor (...
Nội dung trích xuất từ tài liệu:
Quá trình xử lý ảnh thumbnail với PHP Quá trình xử lý ảnh thumbnail với PHPQuản Trị Mạng - Về bản chất, có rất nhiều website lưu trữ những thư viện ảnhriêng biệt và kiểu thiết kế dùng chung, tất cả được “nhúng” trong trang đi kèm vớinhững ảnh thumbnail, mục đích của việc làm này là khi người sử dụng nhấn vàomỗi ảnh thumbnail thì website sẽ hiển thị ảnh gốc với kích thước lớn hơn. Chúngta có thể dễ dàng thực hiện quá trình này bằng cách sử dụng thẻ HTML anchor (89 // ACQUIRE THE ARGUMENTS - MAY NEED SOME SANITYTESTS?10 $thumb_w = $_GET[w];11 $thumb_h = $_GET[h];12 $image_url = $_GET[img];1314 // CREATE THE THUMBNAIL IMAGE RESOURCE AND FILL INTRANSPARENT15 $thumb = imagecreatetruecolor($thumb_w, $thumb_h);16 imagesavealpha($thumb, TRUE);17 $empty = imagecolorallocatealpha($thumb,0x00,0x00,0x00,127);18 imagefill($thumb, 0, 0, $empty);1920 // GET ORIGINAL IMAGE DIMENSIONS21 $array = getimagesize($image_url);22 if ($array)23 {24 list($image_w, $image_h) = $array;25 }26 else27 {28 die(NO IMAGE $image_url);29 }3031 // ACQUIRE THE ORIGINAL IMAGE32 $image_ext = trim(strtoupper(end(explode(., $image_url))));33 switch(strtoupper($image_ext))34 {35 case JPG :36 case JPEG :37 $image = imagecreatefromjpeg($image_url);38 break;3940 case PNG :41 $image = imagecreatefrompng($image_url);42 break;4344 default : die(UNKNOWN IMAGE TYPE: $image_url);45 } 46 47 // GET THE LESSER OF THE RATIO OF THUMBNAIL H OR W DIMENSIONS 48 $ratio_w = ($thumb_w / $image_w); 49 $ratio_h = ($thumb_h / $image_h); 50 $ratio = ($ratio_w < $ratio_h) ? $ratio_w : $ratio_h; 51 52 // COMPUTE THUMBNAIL IMAGE DIMENSIONS 53 $thumb_w_resize = $image_w * $ratio; 54 $thumb_h_resize = $image_h * $ratio; 55 56 // COMPUTE THUMBNAIL IMAGE CENTERING OFFSETS 57 $thumb_w_offset = ($thumb_w - $thumb_w_resize) / 2.0; 58 $thumb_h_offset = ($thumb_h - $thumb_h_resize) / 2.0; 59 60 // COPY THE IMAGE TO THE CENTER OF THE THUMBNAIL 61 imagecopyresampled 62 ( $thumb 63 , $image 64 , $thumb_w_offset 65 , $thumb_h_offset 66 , 0 67 , 0 68 , $thumb_w_resize 69 , $thumb_h_resize 70 , $image_w 71 , $image_h 72 ) 73 ; 74 75 // SHOW THE NEW THUMB IMAGE 76 header(Content-type: image/png); 77 imagepng($thumb); 78 79 // RELEASE THE MEMORY USED BY THE RESOURCES 80 imagedestroy($thumb); 81 imagedestroy($image);Ví dụ về các trường hợp sử dụng:Khi nhìn vào đoạn mã ví dụ trên, cụ thể là dòng thứ 6, chúng ta hoàn toàn có thểđặt đoạn mã này vào thẻ image HTML. Về mặt kỹ thuật, đoạn mã trên sẽ thực hiện3 chức năng chính (từ dòng 9 – 12), hàm img chính là đường dẫn URL của ảnh,còn tham số w và h đại diện cho chiều rộng - width và cao – high. Khi đem ápdụng vào những chương trình cụ thể nào đó, nếu người sử dụng muốn lọc các giátrị này thì hãy đảm bảo đường dẫn URL đã được trỏ chính xác tới ảnh gốc, và thamsố w và h là những giá trị có thực.Quá trình tạo nguồn dữ liệu của ảnh thumbnail:Bước đầu tiên của chúng ta là phải tạo nguồn dữ liệu của ảnh thumbnail này (dòng15 – 18), cụ thể là dùng hàm imageCreateTrueColor() để tạo với các tham số vềkích thước tính theo đơn vị pixel được lấy từ hàm yêu cầu GET. Ở chế độ mặcđịnh, bức ảnh được phủ bởi những pixel màu đen, nhưng người sử dụng lại muốnlàm cho phần hình nền trở nên trong suốt, do vậy chúng ta sẽ tiếp tục sử dụng hàmimageSaveAlpha() để gửi “thông báo” tới thư viện GD và sử dụng toàn bộ kênhalpha, bên cạnh đó là hàm imageColorAllocateAlpha() khi gửi tới ảnh gốc và khitrả về, chúng ta sẽ nhận được tín hiệu của ảnh nền đã được làm trong suốt. Các bạncó thể tham khảo thêm tại đây: http://php.net/manual/en/function.imagecreatetruecolor.php http://php.net/manual/en/function.imagesavealpha.php http://php.net/manual/en/function.imagecolorallocatealpha.php http://php.net/manual/en/function.imagefill.phpKhi phần gốc của ảnh thumbnail đã hoàn tất, chúng ta sẽ tiếp tục với phần ảnh gốc.Trước tiên là lấy thông tin width và high của ảnh bằng hàm getImageSize(), nếucác bạn gặp lỗi tại bước này thì hãy xem lại phần đường dẫn trực tiếp của ảnh,hoặc file đang trỏ đến không phải là file ảnh. Trong bất kỳ trường hợp này, nếuchức năng của hàm này thất bại thì các phần mã tiếp theo cũng không thể tiếp tục,do vậy hãy kiểm tra thật kỹ tại bước này (dòng mã 20 – 30).Các bạn có thể tham khảo thêm thông tin chi tiết tại đây: http://php.net/manual/en/function.getimagesize.phpBước tiếp theo các yêu cầu về định dạng file được gửi đi từ người sử dụng. Về mặtkỹ thuật, PHP sẽ sử dụng các hàm khác nhau để tạo ảnh nguồn từ những định dạngkhác nhau được hỗ trợ, cụ thể những file input sẽ được đáp ứng là JPG và PNG,bên cạnh đó là GIF và BMP (xem dòng mã 32). Sau đó áp dụng cấu trúc điều khiểnswit ...
Nội dung trích xuất từ tài liệu:
Quá trình xử lý ảnh thumbnail với PHP Quá trình xử lý ảnh thumbnail với PHPQuản Trị Mạng - Về bản chất, có rất nhiều website lưu trữ những thư viện ảnhriêng biệt và kiểu thiết kế dùng chung, tất cả được “nhúng” trong trang đi kèm vớinhững ảnh thumbnail, mục đích của việc làm này là khi người sử dụng nhấn vàomỗi ảnh thumbnail thì website sẽ hiển thị ảnh gốc với kích thước lớn hơn. Chúngta có thể dễ dàng thực hiện quá trình này bằng cách sử dụng thẻ HTML anchor (89 // ACQUIRE THE ARGUMENTS - MAY NEED SOME SANITYTESTS?10 $thumb_w = $_GET[w];11 $thumb_h = $_GET[h];12 $image_url = $_GET[img];1314 // CREATE THE THUMBNAIL IMAGE RESOURCE AND FILL INTRANSPARENT15 $thumb = imagecreatetruecolor($thumb_w, $thumb_h);16 imagesavealpha($thumb, TRUE);17 $empty = imagecolorallocatealpha($thumb,0x00,0x00,0x00,127);18 imagefill($thumb, 0, 0, $empty);1920 // GET ORIGINAL IMAGE DIMENSIONS21 $array = getimagesize($image_url);22 if ($array)23 {24 list($image_w, $image_h) = $array;25 }26 else27 {28 die(NO IMAGE $image_url);29 }3031 // ACQUIRE THE ORIGINAL IMAGE32 $image_ext = trim(strtoupper(end(explode(., $image_url))));33 switch(strtoupper($image_ext))34 {35 case JPG :36 case JPEG :37 $image = imagecreatefromjpeg($image_url);38 break;3940 case PNG :41 $image = imagecreatefrompng($image_url);42 break;4344 default : die(UNKNOWN IMAGE TYPE: $image_url);45 } 46 47 // GET THE LESSER OF THE RATIO OF THUMBNAIL H OR W DIMENSIONS 48 $ratio_w = ($thumb_w / $image_w); 49 $ratio_h = ($thumb_h / $image_h); 50 $ratio = ($ratio_w < $ratio_h) ? $ratio_w : $ratio_h; 51 52 // COMPUTE THUMBNAIL IMAGE DIMENSIONS 53 $thumb_w_resize = $image_w * $ratio; 54 $thumb_h_resize = $image_h * $ratio; 55 56 // COMPUTE THUMBNAIL IMAGE CENTERING OFFSETS 57 $thumb_w_offset = ($thumb_w - $thumb_w_resize) / 2.0; 58 $thumb_h_offset = ($thumb_h - $thumb_h_resize) / 2.0; 59 60 // COPY THE IMAGE TO THE CENTER OF THE THUMBNAIL 61 imagecopyresampled 62 ( $thumb 63 , $image 64 , $thumb_w_offset 65 , $thumb_h_offset 66 , 0 67 , 0 68 , $thumb_w_resize 69 , $thumb_h_resize 70 , $image_w 71 , $image_h 72 ) 73 ; 74 75 // SHOW THE NEW THUMB IMAGE 76 header(Content-type: image/png); 77 imagepng($thumb); 78 79 // RELEASE THE MEMORY USED BY THE RESOURCES 80 imagedestroy($thumb); 81 imagedestroy($image);Ví dụ về các trường hợp sử dụng:Khi nhìn vào đoạn mã ví dụ trên, cụ thể là dòng thứ 6, chúng ta hoàn toàn có thểđặt đoạn mã này vào thẻ image HTML. Về mặt kỹ thuật, đoạn mã trên sẽ thực hiện3 chức năng chính (từ dòng 9 – 12), hàm img chính là đường dẫn URL của ảnh,còn tham số w và h đại diện cho chiều rộng - width và cao – high. Khi đem ápdụng vào những chương trình cụ thể nào đó, nếu người sử dụng muốn lọc các giátrị này thì hãy đảm bảo đường dẫn URL đã được trỏ chính xác tới ảnh gốc, và thamsố w và h là những giá trị có thực.Quá trình tạo nguồn dữ liệu của ảnh thumbnail:Bước đầu tiên của chúng ta là phải tạo nguồn dữ liệu của ảnh thumbnail này (dòng15 – 18), cụ thể là dùng hàm imageCreateTrueColor() để tạo với các tham số vềkích thước tính theo đơn vị pixel được lấy từ hàm yêu cầu GET. Ở chế độ mặcđịnh, bức ảnh được phủ bởi những pixel màu đen, nhưng người sử dụng lại muốnlàm cho phần hình nền trở nên trong suốt, do vậy chúng ta sẽ tiếp tục sử dụng hàmimageSaveAlpha() để gửi “thông báo” tới thư viện GD và sử dụng toàn bộ kênhalpha, bên cạnh đó là hàm imageColorAllocateAlpha() khi gửi tới ảnh gốc và khitrả về, chúng ta sẽ nhận được tín hiệu của ảnh nền đã được làm trong suốt. Các bạncó thể tham khảo thêm tại đây: http://php.net/manual/en/function.imagecreatetruecolor.php http://php.net/manual/en/function.imagesavealpha.php http://php.net/manual/en/function.imagecolorallocatealpha.php http://php.net/manual/en/function.imagefill.phpKhi phần gốc của ảnh thumbnail đã hoàn tất, chúng ta sẽ tiếp tục với phần ảnh gốc.Trước tiên là lấy thông tin width và high của ảnh bằng hàm getImageSize(), nếucác bạn gặp lỗi tại bước này thì hãy xem lại phần đường dẫn trực tiếp của ảnh,hoặc file đang trỏ đến không phải là file ảnh. Trong bất kỳ trường hợp này, nếuchức năng của hàm này thất bại thì các phần mã tiếp theo cũng không thể tiếp tục,do vậy hãy kiểm tra thật kỹ tại bước này (dòng mã 20 – 30).Các bạn có thể tham khảo thêm thông tin chi tiết tại đây: http://php.net/manual/en/function.getimagesize.phpBước tiếp theo các yêu cầu về định dạng file được gửi đi từ người sử dụng. Về mặtkỹ thuật, PHP sẽ sử dụng các hàm khác nhau để tạo ảnh nguồn từ những định dạngkhác nhau được hỗ trợ, cụ thể những file input sẽ được đáp ứng là JPG và PNG,bên cạnh đó là GIF và BMP (xem dòng mã 32). Sau đó áp dụng cấu trúc điều khiểnswit ...
Tìm kiếm theo từ khóa liên quan:
Lý thuyết tin học SQL Tin học đại cương giáo trình Tin học đại cương bài giảng Tin học đại cương tài liệu Tin học đại cương lý thuyết Tin học đại cươngGợi ý tài liệu liên quan:
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 287 0 0 -
Tài liệu hướng dẫn thực hành Tin học đại cương - ĐH Bách Khoa Hà Nội
40 trang 251 0 0 -
Giáo trình Tin học đại cương part 7
19 trang 222 0 0 -
Giáo trình Tin học đại cương: Phần 1 - ĐH Kinh tế Quốc Dân
130 trang 153 0 0 -
Giáo trình Tin học đại cương (Tái bản năm 2020): Phần 1 - PGS.TS. Nguyễn Thị Thu Thủy (Chủ biên)
105 trang 141 0 0 -
Hướng dẫn thực hành lập trình C trên Visual Studio
9 trang 125 0 0 -
Giáo trình Tin học đại cương: Phần 1 - Vi Hồng Thắm
90 trang 118 0 0 -
Trắc nghiệm và đáp án hệ cơ sở dữ liệu - ĐH Công Nghiệp Tp. Hồ Chí Minh
63 trang 111 0 0 -
Quản trị người dùng trong Exchange 2007 bằng Powershell
9 trang 103 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 102 0 0