Thứ Năm, 11 tháng 9, 2014

chỉnh ảnh đúng màu cho dân không chuyên

Chỉ với vài bước điều chỉnh đơn giản, những bức ảnh chụp từ tay những người nghiệp dư sẽ trở nên chuyên nghiệp hơn. với phần mềm Photoshop, một bài tham khảo cho những ai muốn tự học Photoshop.
Việc chụp ảnh không chỉ đơn giản là cầm máy ngắm và chụp, mà nó còn bao gồm cả việc căn chỉnh góc độ ánh sáng sao cho màu sắc khi lên ảnh dễ nhìn nhất. Nhưng với những người không chuyên thì vấn đề này có lẽ hơi quá xa xỉ. Rất may rằng nếu bạn không biết chọn góc chụp có ánh sáng tự nhiên tốt thì bạn vẫn có thể tút lại bức ảnh bằng ánh sáng nhân tạo thông qua phần mềm Photoshop. Đầu tiên bạn hãy tự tìm 1 tấm gương lớn hoặc nhờ người khác chụp một bức ảnh trong điều kiện ánh sáng yếu.
 Ảnh gốc có màu sắc khá tối và nhân vật không được nổi bật trên hình vì vậy đầu tiên các bạn cần làm nổi hình ảnh nhân vật lên. Bạn hãy tạo 1 layer level bằng cách bấm vào nút Create new fill or adjustment layer hình tròn với 2 màu đen trắng ở dưới cùng của bảng layer và chọn đến mục Levels.
Tại đây các bạn kéo con trượt màu trắng ở dải màu dưới cùng về phía cuối của thanh trượt (255) và màu đen kéo về vị trí đầu của dải màu (0). Lúc này bức ảnh sẽ sáng hơn 1 chút. Tiếp tục chọn biểu tượng hình tròn trắng đen trên bảng layer nhưng lần này bạn hãy chọn đến mục Color Balance để thêm 1 lớp cân bằng màu vào ảnh.
Đây là bước chính có thể giúp bức ảnh của bạn lột xác hoàn toàn. Bắt đầu với tông màu sáng (highights). Bức ảnh gốc có màu thiên nhiều về màu da cam nên bạn cần tăng thêm các sắc tố lạnh để cân bằng lại màu sắc bức ảnh. Hai tông màu trung và màu tối bạn có thể điều chỉnh tùy ý sao cho vừa mắt vì mỗi bức ảnh sẽ có cách điều chỉnh khác nhau. Hoặc nếu cảm thấy sau khi điều chỉnh Tone Highlights bức ảnh đã vừa mắt bạn thì bạn không cần chỉnh thêm các Tone khác nữa. Tiếp theo bạn cần tạo thêm 1 lớp Brightness/Contrast cũng bằng nút hình tròn trong bảng layer. Lớp này sẽ giúp giảm màu tối của nền và tăng tương phản giữa các vùng sáng tối trên ảnh.
Vậy là về phần màu sắc ảnh chúng ta đã xử lý gần xong, hãy chọn lớp trên cùng trên bảng layer rồi nhấn Ctrl + Shift + E để tạo ra bức ảnh mới đã bao gồm các lớp chỉnh sửa màu sắc bên dưới. Vào tiếp menu Filter > Other > High Pass. và kéo con trượt đủ để các nét chính của bức hình có thể hiện trên nền xám.
Tiếp tục chuyển chế độ hòa trộn của layer này về Linear Light và giảm chỉ số Opacity xuống 1 chút để hiệu ứng không quá đậm. Layer High Pass này sẽ giúp các đường nét trên ảnh nổi bật hơn 1 chút.
Dùng Crop Tool để cắt bỏ những phần ảnh không mong muốn xung quanh có thể gây rối màu cho ảnh.
 Đến đây bạn đã có thể lưu lại bức ảnh của mình được rồi tuy nhiên bạn có thể thêm 1 bước nhỏ nữa để khiến bức ảnh của mình trông tươi hơn 1 chút. Hãy thêm 1 lớp Black & White cũng ở trong menu hình tròn đó. Sau đó chuyển chế độ hòa trộn của lớp này thành Lighten và giảm Opacity xuống khoảng 30%.
Và đây là kết quả cuối cùng mà bạn có được. 
Tham khảo: Genk, spoongraphics   Trong nỗ lực đem đến nhiều hơn nữa những bài viết chất lượng dành cho độc giả, RGB.vn mong muốn sẽ giới thiệu đến các bạn những bài viết nội dung hay được biên tập kỹ lưỡng và nghiêm túc. Hy vọng các bạn sẽ tiếp tục ủng hộ chúng tôi.

Cài đặt module Admin menu trong Drupal 7

ADMINISTRATION MENU CÔNG CỤ HỖ ADMIN MENU. Đây là công cụ giúp tiếp kiệm thời gian cho admin, rất hữu dụng cho việc xây dựng và phát triển site cho web khi lập trình web với Drupal




Bước 1:
Tải ứng dụng và cài đặc bình thường tại trang chủ:







Bước 2:

Vào menu Module kích hoạt admin menu vừa cài đặt








Đồng thời click bỏ chọn module Toobar, đây là menu mặc định của site




Save lại và sau đó rê chuộc menu để thấy khác biệt.

Thứ Tư, 10 tháng 9, 2014

Tiến hành đệ quy menu với PHP và MySql

Trước khi vào bài này bạn vui lòng đọc bài đệ quy menu với php và mysql phần 1 đã nhé.
Ở bài trước chúng ta đã xây dựng được dữ liệu database, xây dựng được layout hiển thị danh sách menu và một lớp Menu dùng để kết nối và lấy dữ liệu trong lập trình web với PHP. Nhưng chúng ta chưa show dữ liệu ra dưới dạng đệ quy nên trong bài này tôi sẽ hướng dẫn các bạn sử dụng đệ quy để hiển thị danh sách menu nhé.
Trước khi vào vấn đề chính tôi xin quay lại bài cũ một xíu. Ở bài trước toi đã tạo một file danhsach.php và code javascript, css thẳng vào trong file luôn. Như vậy trông rất khó coi nên bây giờ tôi sẽ tách nó ra file css riêng và import nó vào. Bởi vậy những đoạn code tôi show sẽ không có những đoạn mã CSS nữa. Và tôi cũng xóa luôn những đoạn mã HTML của từng menu, chỉ chừa lại 1 cái để lặp và hiển thị. Nội dung file danhsach.php lúc này như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="style.css" rel="stylesheet" type="text/css"/>
        <script language="javascript" src="http://code.jquery.com/jquery-2.0.0.min.js"></script>

        <script language="javascript">
            $(document).ready(function() {
                $('#menu_wrapper ul div').hide();
                $('#menu_wrapper ul li a').click(function() {
                    var tmp = $(this).next('div');

                    if ($(tmp).is(':visible')) {
                        $(tmp).hide();
                    }
                    else {
                        $(tmp).show();
                    }
                    return false;
                });
            });
        </script>
    </head>
    <body>
        <div id="menu_wrapper">
            <input type="button" class="button" value="Thêm"/> <br/> <br/>
            <hr/><br/>
            <ul>
                <li>
                    <a href="">Nội dung menu</a>
                    <div>
                        <table border="0">
                            <tr>
                                <td>Title</td>
                                <td><input id="menu_title_{id_hien_tai}" name="" value="" /></td>
                            </tr>
                            <tr>
                                <td>Link</td>
                                <td><input id="menu_link_{id_hien_tai}" name="" value="" /></td>
                            </tr>
                            <tr>
                                <td>Parent</td>
                                <td>
                                    <select id="menu_parent_id_{id_hien_tai}">
                                        <option>-TOP-</option>
                                    </select>
                                    <input type="button" data-id="{id_hien_tai}" name="" class="button menu-save" value="Lưu" />
                                </td>
                            </tr>
                        </table>
                    </div>
                </li>
            </ul>
        </div>
    </body>
</html>
Các bạn để ý rằng các thẻ input tôi có đặt ID theo một quy luật như hình dưới đây:
đệ quy menu
Trong mỗi ô tôi khoanh tròn các bạn thấy tôi có một đoạn code {id_hien_tai}. Mục đích là trong quá trình lặp tôi sẽ điền ID của menu hiện tại vào để khi click vào button EDIT ta có thể lấy đúng input của menu đó để lưu dữ liệu. ở button lưu tôi cố thêm một class tên là menu-savemục đích dùng để bắt sự kiện click và xử lý.
Đơn giản phải không nào, bây giờ ta tiến hành xây dựng hàm đệ quy php để hiển thị danh sách nhé.
1. Xây dựng hàm đệ quy php hiển thị danh sách
Trước tiên bạn tạo file dequy.php và copy nọi dung bên dưới vào:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
 * Hàm hiển thị danh sách menu dạng list
 * Tham số truyền vào:
 *  - $menus: danh sách menu
 *  - $id_parent: mặc định, không cần truyền vào
 */
function showMenuLi($menus, $id_parent = 0)
{
    # BƯỚC 1: LỌC DANH SÁCH MENU VÀ CHỌN RA NHỮNG MENU CÓ ID_PARENT = $id_parent
     
    // Biến lưu menu lặp ở bước đệ quy này
    $menu_tmp = array();

    foreach ($menus as $key => $item) {
        // Nếu có parent_id bằng với parrent id hiện tại
        if ((int) $item['menu_parent_id'] == (int) $id_parent) {
            $menu_tmp[] = $item;
            // Sau khi thêm vào biên lưu trữ menu ở bước lặp
            // thì unset nó ra khỏi danh sách menu ở các bước tiếp theo
            unset($menus[$key]);
        }
    }

    # BƯỚC 2: lẶP MENU THEO DANH SÁCH MENU Ở BƯỚC 1
     
    // Điều kiện dừng của đệ quy là cho tới khi menu không còn nữa
    if ($menu_tmp)
    {
        echo '<ul>';
        foreach ($menu_tmp as $item)
        {
            echo '<li>';
            echo '<a href="' . $item['menu_link'] . '">' . $item['menu_title'] . '</a>';
            echo '<div>
                        <table border="0">
                            <tr>
                                <td>Title</td>
                                <td><input id="menu_title_' . $item['menu_id'] . '" value="' . $item['menu_title'] . '" /></td>
                            </tr>
                            <tr>
                                <td>Link</td>
                                <td><input id="menu_link_' . $item['menu_id'] . '" value="' . $item['menu_link'] . '" /></td>
                            </tr>
                            <tr>
                                <td>Parent</td>
                                <td>
                                    <select id="menu_parent_id_' . $item['menu_id'] . '">
                                    </select>
                                    <input type="button" data-id="' . $item['menu_id'] . '" class="button menu-save" value="Lưu" />
                                </td>
                            </tr>
                        </table>
                   </div>';
             
            // Gọi lại đệ quy
            // Truyền vào danh sách menu chưa lặp và id parent của menu hiện tại
            showMenuLi($menus, $item['menu_id']);
            echo '</li>';
        }
        echo '</ul>';
    }
}

Trong hàm này tôi đã lặp thẻ UL trong file danhsach.php, và ở mỗi lần lặp tôi đã thay giá trị 
{id_hien_tai} thành $item['menu_id']
Bây giờ bạn thay đổi nội dung file danhsach.php như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
require "menu.php";
require "dequy.php";

// Đối tượng menu
$object = new Menu();

// Danh sách menu
$menus = $object->getList();
?>

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="style.css" rel="stylesheet"/>
         <script language="javascript" src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
         <script language="javascript">
             $(document).ready(function(){
                $('#menu_wrapper ul div').hide();
                $('#menu_wrapper ul li a').click(function(){
                    var tmp = $(this).next('div');
                     
                    if ($(tmp).is(':visible')){
                        $(tmp).hide();
                    }
                    else{
                        $(tmp).show();
                    }
                    return false;
                });
             });
         </script>
    </head>
    <body>
        <div id="menu_wrapper">
            <input type="button" class="button" value="Thêm"/> <br/> <br/>
            <hr/><br/>
            <?php showMenuLi($menus); ?>
        </div>
    </body>
</html>
Đơn giản không nào, đoạn code đầu file mục đích lấy danh sách menu và import thư viện dequy vào. Ở đoạn giữa file tôi xóa đi những đoạn mã HTML hiển thị menu và thay vào đó là gọi hàm đệ quy menu.
2. Thêm dữ liệu vào menu
Các bạn thêm một số dòng dữ liệu để hiển thị menu. Copy và vào phpmyadmin chạy nhé.
1
2
3
4
5
6
7
8
9
INSERT INTO `menu` (`menu_id`, `menu_title`, `menu_link`, `menu_parent_id`) VALUES
(1, 'PARENT1', NULL, 0),
(2, 'PARENT2', NULL, 0),
(3, 'SUB1', NULL, 1),
(4, 'SUB2', NULL, 1),
(5, 'SUB3', NULL, 1),
(6, 'SUB4', NULL, 2),
(7, 'SUB5', NULL, 2),
(8, 'SUB6', NULL, 3);
Chạy lên ta sẽ có giao diện.