Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Trong bài viết trước, chúng ta đã tập trung vào việc tải và thao tác với hình ảnh bằng PHP. Chúng tôi đã học cách xoay, thay đổi kích thước, chia tỷ lệ hoặc lật hình ảnh. Chúng tôi cũng đã tìm hiểu về các bộ lọc khác nhau và ma trận tích chập. Những hướng dẫn đó cũng đề cập đến một số cách sử dụng thực tế của thư viện GD, như thay đổi kích thước tất cả hình ảnh trong một thư mục hoặc thêm hình mờ trên nhiều hình ảnh cùng một lúc

  • Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?

    Thao tác hình ảnh trong PHP bằng GD

    Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?

    Monty Shokeen

    28 tháng năm 2022

  • Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?

    Thay đổi kích thước và thao tác hình ảnh trong PHP (Có ví dụ)

    Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?
    Làm cách nào để tạo hình ảnh đồ họa trong PHP?

    Monty Shokeen

    30 Th06 2022

Bên cạnh việc sử dụng GD để thao tác với các hình ảnh thông thường, chúng ta cũng có thể tạo hình ảnh của riêng mình từ đầu. Chúng ta có thể sử dụng các hàm khác nhau trong thư viện để vẽ các hình cơ bản như hình elip, hình tròn, hình chữ nhật, hình đa giác và các đường đơn giản. Với một số phép toán, những hình dạng này có thể tạo ra các mẫu đẹp. Ngoài ra còn có các chức năng có sẵn để vẽ văn bản trên hình ảnh được hiển thị, mở ra rất nhiều khả năng

Hướng dẫn này sẽ dạy bạn cách vẽ các hình cơ bản trong PHP và cách hiển thị văn bản bằng phông chữ yêu thích của bạn

Đây là bản xem trước của những gì chúng ta sẽ tạo ở cuối bài viết

Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Vẽ các hình dạng cơ bản trong PHP với GD

Chúng ta sẽ tìm hiểu về các hình cơ bản trong phần này và sau đó sẽ đề cập đến độ dày của đường kẻ, bút vẽ và kiểu đường kẻ sau

Vẽ các đường

Bạn có thể vẽ một đường thẳng đơn giản giữa hai điểm đã cho bằng hàm

3
32. Tham số
3
33 là một tài nguyên hình ảnh sẽ được tạo trước đó bằng cách sử dụng các chức năng như
3
34 hoặc
3
35. Chúng tôi sẽ sử dụng
3
34 trong suốt hướng dẫn này để tạo hình ảnh mới từ đầu. Hàm sẽ vẽ một đường nằm ngang nếu
3
37 bằng với
3
38. Tương tự, nó sẽ vẽ một đường thẳng đứng nếu
3
39 bằng với
3
40

Vẽ vòng tròn và vòng cung

Hàm

3
41 có thể vẽ các cung tròn bằng cách sử dụng
3
42 và
3
43 làm tâm của nó. Các tham số
3
44 và
3
45 xác định kích thước của cung trên các trục khác nhau. Các tham số
3
46 và
3
47 chỉ định góc bắt đầu và góc kết thúc của cung theo độ. Nếu bạn muốn vẽ các cung hoàn chỉnh từ 0 đến 360 độ, bạn có thể sử dụng hàm thay thế
3
48

Vẽ hình chữ nhật và đa giác

Bạn có thể vẽ hình chữ nhật trên hình ảnh bằng cách sử dụng hàm

3
49. Các giá trị
3
39 và
3
37 xác định góc trên cùng bên trái của hình chữ nhật. Các giá trị
3
40 và
3
38 xác định góc dưới cùng bên phải. Ngoài ra còn có một hàm
3
54, có thể tạo một đa giác với bất kỳ số cạnh hoặc số điểm nào. Tham số
3
55 là một mảng trong đó hai phần tử được ghép nối để lấy tọa độ của một điểm cụ thể.  

Một chức năng khác được gọi là

3
56 đã được thêm vào PHP 7, chức năng này không vẽ đường thẳng giữa điểm đầu tiên và điểm cuối cùng

Đặt nó lại với nhau để tạo một bản vẽ

Trong ví dụ sau, chúng tôi đã sử dụng tất cả các chức năng này để tạo một bản vẽ đường có túp lều, mặt trời và mặt đất

1
<?php
2
3
header("Content-type: image/png");
4
5
$img_width = 800;
6
$img_height = 600;
<?php
0
<?php
1
<?php
2
<?php
3
<?php
4
<?php
5
<?php
6
<?php
7
<?php
8
<?php
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
header("Content-type: image/png");
0
header("Content-type: image/png");
1
header("Content-type: image/png");
2
header("Content-type: image/png");
3
header("Content-type: image/png");
4
header("Content-type: image/png");
5
header("Content-type: image/png");
6
header("Content-type: image/png");
7
header("Content-type: image/png");
8
header("Content-type: image/png");
9
4
0
4
1
4
2

Điều quan trọng ở đây chỉ là tìm ra giá trị của các tọa độ khác nhau. Tôi muốn vẽ mọi thứ tương ứng với kích thước của ảnh gốc, vì vậy tôi đã sử dụng các biến

3
57 và
3
58 để tính toán tọa độ của các điểm khác nhau

Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Kiểm soát độ dày của đường kẻ, kiểu và màu tô

Hình ảnh trên có một số vấn đề, chẳng hạn như các đường rất mỏng và không có màu. Tất cả những sự cố này có thể được khắc phục dễ dàng bằng cách sử dụng các chức năng như

3
59 và
3
60

Độ dày đường

Hàm

3
61 đặt độ dày của các đường được hiển thị khi vẽ hình chữ nhật, đa giác, hình cung, v.v. Ví dụ: đặt
3
62 thành 5 sẽ làm cho bất kỳ hình nào được vẽ bằng cách sử dụng
3
63,
3
64,
3
65, v.v. dày 5 pixel

Vẽ hình dạng đầy

Mỗi chức năng vẽ cũng có một phiên bản tô màu để lấp đầy hình cụ thể đó bằng một màu nhất định. Ví dụ:

3
60 sẽ tô hình chữ nhật đã vẽ bằng màu đã cho

Sử dụng cọ

Một chức năng GD rất hữu ích là

3
67. Tham số
3
68 trong hàm này chỉ là một tài nguyên hình ảnh khác có thể được sử dụng để vẽ các đường. Chẳng hạn, bạn có thể sử dụng bản vẽ vector trong suốt của một bông hoa làm bút vẽ để thêm các mẫu hoa đẹp vào hình ảnh của mình. Đoạn mã đưa ra dưới đây được viết để sử dụng hình ảnh đám mây làm bút vẽ khi vẽ một điểm. Điều này thêm một đám mây duy nhất trên bầu trời của chúng ta

1
<?php
2
3
<?php
2
4
5
___
5
0
6
31_______2
<?php
0
<?php
1
5
5
<?php
3
5
7
<?php
4
<?php
6
$img_width = 800;
0
<?php
8_______27_______0_______30_______2

Tôi đã tìm thấy hình ảnh đám mây này trên Pixabay và thu nhỏ nó xuống kích thước phù hợp cho dự án của chúng tôi

Mã hoàn chỉnh cho hình ảnh túp lều được đưa ra dưới đây. Chúng tôi chỉ cần thêm hai phiên bản của mỗi hình, một để vẽ đường viền và phiên bản còn lại để tô màu

1
<?php
2
3
header("Content-type: image/png");
4
$img_width = 800;
5
$img_height = 600;
6
<?php
0
<?php
2
<?php
1
<?php
3
5
0
<?php
4
5
2
<?php
6
<?php
8
5
5
2
0
5
7
2
2
2
4
<?php
5
2
6
<?php
7
2
7
<?php
9
2
9
2
1
3
0
<?php
06
3
2
2
5
3
4
<?php
10
3
5
3
7
2
8
3
9
header("Content-type: image/png");
0
<?php
16
header("Content-type: image/png");
2
header("Content-type: image/png");
4
<?php
19
header("Content-type: image/png");
5
<?php
21
header("Content-type: image/png");
7
header("Content-type: image/png");
8
<?php
24
4
0
<?php
26
4
1
<?php
28
<?php
29

Đây là kết quả cuối cùng của mã PHP GD ở trên

Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Kết xuất văn bản trên hình ảnh

PHP GD đi kèm với bốn chức năng khác nhau để cho phép bạn hiển thị nhiều ký tự hoặc chỉ một ký tự theo hướng ngang hoặc dọc. Các chức năng này là 

3
69,
3
70,
3
71 và
3
72. Tất cả chúng đều chấp nhận sáu tham số giống nhau, vì vậy chúng ta sẽ chỉ thảo luận về hàm
3
69 tại đây

Hàm

3
74 tham số
3
75 chỉ đơn giản là kích thước của văn bản được hiển thị. Nó chỉ chấp nhận các giá trị số nguyên từ 1 đến 5. Tham số
3
76 là văn bản mà bạn muốn hiển thị. Nếu bạn chuyển một chuỗi nhiều ký tự cho các hàm char, chỉ ký tự đầu tiên sẽ được hiển thị trên hình ảnh. Hàm
3
70 và
3
72 sẽ hiển thị văn bản theo chiều dọc từ dưới lên trên

Khi nói đến kết xuất văn bản, bốn chức năng chúng tôi đã thảo luận ở trên rất hạn chế. Bạn sẽ thấy rằng ngay cả giá trị kích thước phông chữ lớn nhất cũng quá nhỏ để sử dụng bình thường. Ngoài ra, văn bản chỉ có thể được viết theo chiều ngang và chiều dọc

May mắn thay, GD cũng có chức năng

3
79 có thể hiển thị văn bản ở bất kỳ phông chữ nào bạn muốn. Tham số
3
80 được sử dụng để chỉ định đường dẫn đến phông chữ TrueType mà bạn muốn sử dụng để hiển thị văn bản. Các tham số
3
81 và
3
82 xác định vị trí bắt đầu của văn bản được hiển thị

Ví dụ sau sử dụng tất cả các chức năng này để tạo một số hiệu ứng văn bản đẹp mắt

1
<?php
2
3
header("Content-type: image/png");
4
$img_width = 800;
5
$img_height = 600;
6
<?php
0
<?php
2
<?php
1
<?php
3
<?php
5
<?php
4
<?php
7
<?php
6
<?php
9
<?php
8
2
1
2
0
<?php
06
2
2
2
5
2
4
<?php
10
2
6
2
7
2
8
2
9
3
0
<?php
93
3
2
<?php
95
3
4
3
5
<?php
98
3
7
2
00
3
9
header("Content-type: image/png");
0
2
03
header("Content-type: image/png");
2
2
05
header("Content-type: image/png");
4
header("Content-type: image/png");
5
2
08
header("Content-type: image/png");
7
2
10
header("Content-type: image/png");
8
2
12
4
0
4
1
2
15________26_____

Như bạn có thể thấy, chúng tôi đã hiển thị cùng một văn bản với cùng một phông chữ ở các vị trí hơi khác nhau để tạo một số hiệu ứng như đổ bóng văn bản cơ bản. Điều quan trọng cần lưu ý là văn bản được hiển thị bởi bất kỳ chức năng văn bản nào sẽ ẩn hoàn toàn văn bản bên dưới nó trong trường hợp chồng chéo. Đây là hình ảnh cuối cùng thu được sau khi chạy đoạn mã trên

Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Tạo các thiết kế và áp phích đơn giản

Hãy sử dụng tất cả kiến ​​thức mà chúng ta có được cho đến nay để tạo áp phích hoặc hình ảnh đơn giản với sự kết hợp giữa văn bản và hình dạng. Tôi sẽ cố gắng tạo lại một cái gì đó tương tự như hình ảnh trong hướng dẫn thao tác hình ảnh PHP này, nơi chúng tôi đã thay thế màu sắc. Chúng tôi sẽ vẽ các vòng tròn đồng tâm để giữ cho phép tính của chúng tôi đơn giản

Một chức năng mới mà chúng ta sẽ sử dụng trong phần này được gọi là

3
83. Về cơ bản, nó cung cấp cho chúng ta hộp giới hạn của văn bản mà chúng ta muốn viết bằng phông chữ TrueType. Chúng tôi sẽ sử dụng chức năng để tăng tỷ lệ văn bản của mình sao cho chiều rộng hoặc chiều cao của nó đạt đến một phần nhất định của hình ảnh. Sau đó, chúng ta có thể vẽ văn bản của mình lên hình ảnh bằng hàm
3
84

1
<?php
2
3
2
44
4
2
46
5
2
48
6
<?php
2
<?php
0
<?php
1
2
53
<?php
3
<?php
7
<?php
4
<?php
6
2
58
<?php
8
2
0
2
61
2
2
2
4
2
64
2
6
2
66
2
7
2
68
2
9
2
70
3
0
3
2
2
73
3
4
2
75
3
5
2
77
3
7
3
9
2
80
header("Content-type: image/png");
0
2
82
header("Content-type: image/png");
2
2
84
header("Content-type: image/png");
4
header("Content-type: image/png");
5
header("Content-type: image/png");
7
2
88
header("Content-type: image/png");
8
4
0
2
91
4
1
<?php
28
4
2

Chúng tôi bắt đầu với kích thước phông chữ cơ bản là 20 điểm và sau đó tiếp tục tăng nó lên 4 miễn là cả chiều rộng và chiều cao đều nằm trong giới hạn đã xác định. Khi chúng tôi đạt được kích thước phông chữ phù hợp, chúng tôi thoát khỏi vòng lặp và hiển thị văn bản trên hình ảnh bằng cách sử dụng

3
84

Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Bây giờ chúng ta có thể bao gồm đoạn mã sau trước dòng cuối cùng nơi chúng ta lưu hình ảnh để thêm các vòng tròn đồng tâm đã điền vào góc dưới cùng bên trái và trên cùng bên phải của hình ảnh

1
<?php
2
3
2
99
4
3
01
5
3
03
6
3
05
<?php
0
<?php
1
3
08
<?php
3
<?php
4
3
11
<?php
6
<?php
8
3
14
2
0
3
16
2
2
3
18
2
4
3
20
2
6
2
7
3
23
2
9
3
0
3
26
3
2
3
28
3
4
3
5
4
2

Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?
Làm cách nào để tạo hình ảnh đồ họa trong PHP?

Như bạn có thể thấy, có thể dễ dàng tạo các mẫu thú vị bằng cách sử dụng một chút toán học và một số hàm PHP GD tích hợp

Suy nghĩ cuối cùng

Mục đích của hướng dẫn này là giúp bạn làm quen với các hàm GD khác nhau để vẽ các hình cơ bản từ đầu trong PHP. Với sự trợ giúp của một chút toán học, bạn sẽ có thể sử dụng các hàm này để tạo các hình dạng phức tạp hơn như đa giác đều, hình chữ nhật tròn, v.v.

PHP GD cũng có một số chức năng rất hữu ích để hiển thị văn bản trên hình ảnh. Việc sử dụng một phông chữ đẹp sẽ đảm bảo rằng văn bản hiển thị trông không lạ khi được đặt trên các hình ảnh thông thường được tải từ các đường dẫn tệp khác nhau

Làm cách nào để tạo đồ họa bằng PHP?

php //cách tạo hình ảnh đầu tiên $image = imagecreatetruecolor(500,250); //Phân bổ màu cho hình ảnh $red = . hình ảnh/jpeg.

Làm cách nào để tạo một hình ảnh png trong PHP?

Ví dụ số 1 về tạo PNG với PHP . $string = $_GET['text']; $im = imagecreatefrompng("images/button1. png"); $orange = imagecolorallocate($im, 220, 210, 60);

Làm cách nào để vẽ một hình ảnh trong PHP?

php $image = imagecreate ( 200 , 200 ); . hình ảnh/png" ); imagepng ($ image );

Chúng ta có thể vẽ hình ảnh bằng PHP không?

PHP cung cấp nhiều chức năng để vẽ đường thẳng, hình chữ nhật, đa giác, cung tròn, hình elip và nhiều hơn nữa. Thư viện GD được sử dụng để tạo ảnh động. Trong PHP, chúng ta có thể dễ dàng sử dụng thư viện GD để tạo ảnh GIF, PNG hoặc JPG một cách nhanh chóng từ mã của mình. Vì vậy, không cần phải viết mã HTML và CSS