Thật dễ dàng để hiển thị phiên bản đã thay đổi kích thước hoặc cắt xén của hình ảnh trên trang web bằng CSS. Tuy nhiên, điều này không thay đổi dữ liệu hình ảnh gốc. Điều gì sẽ xảy ra nếu bạn muốn tạo một phiên bản hình ảnh đã cắt hoặc thay đổi kích thước thực tế cho khách truy cập hoặc khách hàng của mình? Show
Chúng tôi đã xuất bản một số hướng dẫn về cách tạo hình thu nhỏ của hình ảnh bằng PHP hoặc áp dụng cắt xén, thay đổi kích thước và các bộ lọc khác bằng PHP. Trong hướng dẫn này, bạn sẽ học cách cắt hoặc thay đổi kích thước hình ảnh bằng JavaScript Đây là bản trình diễn trực tiếp về mã cắt xén hình ảnh của chúng tôi đang hoạt động Và đây là một ví dụ về mã thay đổi kích thước Những điều cần ghi nhớChúng tôi sẽ cần quyền truy cập vào dữ liệu hình ảnh gốc để tạo phiên bản mới của hình ảnh được cắt hoặc thay đổi kích thước theo các kích thước cụ thể. Chúng ta có thể làm điều đó với sự trợ giúp của phần tử // Referencing an Image loaded in the DOM
89Phần tử HTML canvas đã xuất hiện từ lâu và chúng ta có thể sử dụng nó để vẽ tất cả các loại đồ họa. Có hàng trăm thư viện mà bạn có thể sử dụng để tạo biểu đồ, vectơ và hoạt ảnh bằng API canvas. Chúng tôi sẽ sử dụng API trong hướng dẫn này để tạo ảnh cắt và thay đổi kích thước hình ảnh của bạn Một điều mà bạn cần lưu ý là để có quyền truy cập vào dữ liệu hình ảnh để thao tác với canvas yêu cầu bạn phải có hình ảnh trên cùng một máy chủ hoặc sử dụng thuộc tính // Referencing an Image loaded in the DOM
90 để cho biết rằng canvas có quyền truy cập, sửa đổi, 1. Tải dữ liệu hình ảnhĐiều đầu tiên chúng ta cần làm là tải dữ liệu hình ảnh của mình. Bạn có thể làm điều đó bằng cách tham chiếu một hình ảnh đã được tải trong DOM hoặc bằng cách tạo một hình ảnh mới bằng cách sử dụng hàm tạo // Referencing an Image loaded in the DOM
91. Đây là một ví dụ1________0____5_______ const originalImage = document.querySelector("img.puppy"); 3 4 // Using the Image() constructor
5 let imagePath = 'images/puppy.jpg'; 6 // Referencing an Image loaded in the DOM
0_______0_______1// Referencing an Image loaded in the DOM
22. Vẽ hình ảnh trên CanvasBây giờ chúng ta sẽ sử dụng trình lắng nghe sự kiện để đợi hình ảnh tải và sau đó lấy chiều rộng và chiều cao ban đầu của nó. Chiều rộng và chiều cao này được sử dụng để xác định tỷ lệ khung hình của hình ảnh. Có quyền truy cập vào tỷ lệ khung hình sẽ cho phép chúng tôi thay đổi kích thước hình ảnh mà không kéo giãn hình ảnh theo bất kỳ hướng nào, để chúng tôi có thể tránh được bất kỳ biến dạng nào Phương thức // Referencing an Image loaded in the DOM
92 của canvas API sẽ có một vai trò quan trọng ở đây. Chúng tôi có thể sử dụng nó để thay đổi kích thước và cắt hình ảnh của mình bằng cách chuyển một số đối số thích hợp. Nó có thể chấp nhận ba, năm hoặc chín tham số và có cú pháp sau1 // Referencing an Image loaded in the DOM
4_______5_______// Referencing an Image loaded in the DOM
63 // Referencing an Image loaded in the DOM
8Chúng tôi sẽ sử dụng phiên bản thứ hai cho chức năng thay đổi kích thước và phiên bản thứ ba để thực hiện cắt xén. Tham số đầu tiên là thành phần hình ảnh mà bạn muốn vẽ trên canvas. Các tiền tố // Referencing an Image loaded in the DOM
93 và // Referencing an Image loaded in the DOM
94 biểu thị nguồn và đích cho hình ảnh gốc và hình ảnh mới của chúng tôi. Điều này có nghĩa là // Referencing an Image loaded in the DOM
95 và // Referencing an Image loaded in the DOM
96 đại diện cho tọa độ trên cùng bên trái của hình ảnh. Tương tự, // Referencing an Image loaded in the DOM
97/_______0_______98 và // Referencing an Image loaded in the DOM
99/200 đại diện cho chiều rộng và chiều cao của hình ảnh Tôi đã đánh dấu các giá trị nguồn trên hình ảnh con chó con từ Pixabay mà chúng tôi sẽ cắt xén để cung cấp cho bạn ý tưởng về ý nghĩa của các tham số này Góc trên bên trái của hình ảnh được coi là (0, 0) và góc dưới bên phải tương ứng với ( 201, 202). Điều này có nghĩa là chúng ta có thể lấy toàn bộ hình ảnh bằng cách đặt các giá trị của 203, 204, // Referencing an Image loaded in the DOM
97 và // Referencing an Image loaded in the DOM
98 thành 0, 0, chiều rộng hình ảnh và chiều cao hình ảnh tương ứngThay đổi kích thước hình ảnhGiả sử chúng ta muốn thay đổi kích thước hình ảnh con chó con sao cho nó chỉ rộng 500 pixel. Chúng tôi có thể sử dụng mã JavaScript sau để thay đổi kích thước hình ảnh của mình. Chúng tôi sẽ sửa đổi mã này sau để trở thành một chức năng có thể gọi được để chiều rộng không còn được mã hóa cứng và chiều cao có thể được đặt tùy ý khi người dùng không muốn giữ nguyên tỷ lệ khung hình 1 20_______5_______ 3 23 4___ 25 512_______5_______8 // Referencing an Image loaded in the DOM
1const originalImage = document.querySelector("img.puppy");0 const originalImage = document.querySelector("img.puppy");1 const originalImage = document.querySelector("img.puppy");2 const originalImage = document.querySelector("img.puppy");3 const originalImage = document.querySelector("img.puppy");4 const originalImage = document.querySelector("img.puppy");5 const originalImage = document.querySelector("img.puppy");6 const originalImage = document.querySelector("img.puppy");7 const originalImage = document.querySelector("img.puppy");9_______7_______0_______7_______1_______7_______4_______ Bên trong trình xử lý sự kiện của chúng tôi, chúng tôi sử dụng thuộc tính 207 và 208 của đối tượng Hình ảnh của chúng tôi để lấy kích thước của nó. Chúng tôi sử dụng thông tin này để lấy tỷ lệ khung hình của hình ảnh. Giá trị của biến 209 xác định độ rộng mà chúng ta muốn hình ảnh khi nó được thay đổi kích thước. Sau đó, chúng tôi tính toán 210 bằng cách chia chiều rộng cho tỷ lệ khung hình được tính toán của chúng tôi Các giá trị này cũng được sử dụng để đặt chiều rộng và chiều cao của canvas. Chúng tôi chỉ cần sử dụng phương pháp // Referencing an Image loaded in the DOM
92 để vẽ hình ảnh của chúng tôi trên canvas sau đóCắt hình ảnhBạn có thể nhớ lại từ cuộc thảo luận trước đây của chúng ta rằng việc gọi phương thức // Referencing an Image loaded in the DOM
92 với năm tham số chỉ yêu cầu chúng ta chuyển tọa độ và kích thước đích. Hình ảnh nguồn đã được vẽ toàn bộ trên canvas mới. Tuy nhiên, chúng ta cũng có thể chuyển tọa độ và kích thước nguồn tùy ý cho phương thức // Referencing an Image loaded in the DOM
92 để chỉ vẽ một phần của hình ảnh nguồn. Đây là một triển khai rất cơ bản để cắt hình ảnh trong JavaScript1 20_______5_______ 30_______7_______ 40 48_______2 5 68_______5_______0_______1 47 const originalImage = document.querySelector("img.puppy");0 const originalImage = document.querySelector("img.puppy");2 // Using the Image() constructor
0const originalImage = document.querySelector("img.puppy");4 // Using the Image() constructor
2const originalImage = document.querySelector("img.puppy");5_______6_______7_______9_______5_______6_______9_______7_______4 Chúng tôi sẽ cải thiện mã này sau để các giá trị không được mã hóa cứng mà được lấy từ một hàm có thể gọi được. 214 cũng sẽ được xác định tự động từ 215 và tỷ lệ khung hình khi người dùng không chuyển giá trị của nó 3. Đang tải xuống hình ảnhTrừ khi mục tiêu chỉ đơn giản là hiển thị hình ảnh đã cắt hoặc thay đổi kích thước trên trang web, bạn cũng có thể muốn cung cấp cho người dùng khả năng tải xuống hình ảnh. Chúng ta có thể đạt được điều này với nỗ lực tối thiểu bằng cách sử dụng phương pháp 216. Nó chấp nhận hai tham số cho phép bạn chỉ định định dạng tệp và chất lượng hình ảnh Giả sử bạn có một nút tải xuống trên trang web của mình với HTML sau 1 // Using the Image() constructor
9Sau đó, chúng tôi có thể sử dụng JavaScript sau để tạo một liên kết giả tạm thời cho phép chúng tôi tải xuống hình ảnh của mình 1 51 2 3 54 410_______6 510_______8 611_______0 // Referencing an Image loaded in the DOM
1let imagePath = 'images/puppy.jpg';2 const originalImage = document.querySelector("img.puppy");0 34 Nhấp vào nút tải xuống ngay bây giờ sẽ bắt đầu tải xuống một tệp có tên là con chó con bị cắt. jpg 4. Tạo chức năng cắt và thay đổi kích thước có thể tái sử dụngRất nhiều giá trị trong mã của chúng tôi hiện đang được mã hóa cứng. Điều này hạn chế nghiêm trọng khả năng sử dụng lại của mã. Hãy viết lại nó theo cách cho phép chúng ta gọi một chức năng duy nhất để cắt, thay đổi kích thước và tải xuống hình ảnh. Đây là mã thay đổi kích thước hoặc cắt bất kỳ hình ảnh đã cho nào theo kích thước đã chỉ định và sau đó lưu nó với một tên nhất định 1 let imagePath = 'images/puppy.jpg';6 2 let imagePath = 'images/puppy.jpg';8 3 60 4 5 63 6 65 // Referencing an Image loaded in the DOM
1const originalImage = document.querySelector("img.puppy");0 68 const originalImage = document.querySelector("img.puppy");2 const originalImage = document.querySelector("img.puppy");4 // Referencing an Image loaded in the DOM
01const originalImage = document.querySelector("img.puppy");5 // Referencing an Image loaded in the DOM
03const originalImage = document.querySelector("img.puppy");7 const originalImage = document.querySelector("img.puppy");9 // Referencing an Image loaded in the DOM
0631 33 // Referencing an Image loaded in the DOM
09// Referencing an Image loaded in the DOM
10// Referencing an Image loaded in the DOM
11// Referencing an Image loaded in the DOM
12// Referencing an Image loaded in the DOM
13// Referencing an Image loaded in the DOM
14// Referencing an Image loaded in the DOM
15// Referencing an Image loaded in the DOM
16// Referencing an Image loaded in the DOM
17// Referencing an Image loaded in the DOM
18// Referencing an Image loaded in the DOM
19// Referencing an Image loaded in the DOM
20// Referencing an Image loaded in the DOM
21// Referencing an Image loaded in the DOM
22// Referencing an Image loaded in the DOM
23// Referencing an Image loaded in the DOM
24// Referencing an Image loaded in the DOM
25// Referencing an Image loaded in the DOM
26// Referencing an Image loaded in the DOM
27// Referencing an Image loaded in the DOM
28// Referencing an Image loaded in the DOM
29// Referencing an Image loaded in the DOM
30// Referencing an Image loaded in the DOM
31// Referencing an Image loaded in the DOM
32let imagePath = 'images/puppy.jpg';8 // Referencing an Image loaded in the DOM
3460 // Referencing an Image loaded in the DOM
36// Referencing an Image loaded in the DOM
3763 // Referencing an Image loaded in the DOM
3965________0__ Suy nghĩ cuối cùngTrong hướng dẫn này, chúng ta đã học cách cắt và thay đổi kích thước Hình ảnh trong JavaScript bằng API canvas. Tất cả những gì chúng ta cần làm là vẽ hình ảnh trên khung vẽ bằng phương pháp // Referencing an Image loaded in the DOM
92 và sau đó chuyển đổi nó thành dữ liệu hình ảnh bằng phương pháp 216 Vì chúng tôi đã tải hình ảnh trên khung vẽ, bạn nên thử triển khai chức năng bổ sung như cho phép người dùng chuyển một giá trị phân số để đặt kích thước mới đối với hình ảnh gốc. Làm cách nào để cắt hoặc thay đổi kích thước hình ảnh bằng JavaScript?Một cách phổ biến để cắt hình ảnh trong JavaScript là sử dụng phần tử HTML5 . Bước 1. Tạo Canvas trong HTML. . Bước 2. Tạo tệp JavaScript và chức năng cắt. . Bước 3. Tải hình ảnh. . Bước 4. Gọi hàm drawImage() Làm cách nào để thay đổi kích thước canvas JavaScript?Thay đổi kích thước canvas nhanh chóng khá dễ dàng. Để làm điều đó, chỉ cần đặt thuộc tính chiều rộng và chiều cao của đối tượng Canvas, sau đó vẽ lại nội dung canvas . Tranh sơn dầu. chiều rộng = 600; .
Làm cách nào để giảm kích thước tệp trong JavaScript?Làm cho JS tải nhanh hơn trong trình duyệt . Giảm lượng JS bạn sử dụng để xây dựng trang. . Sử dụng các tệp JS được rút gọn. . Tự lưu trữ JS của bên thứ ba nếu có (hoặc sử dụng nhân viên dịch vụ). Nén JS. . Sử dụng đẩy và tải trước cho JS quan trọng. . Loại bỏ mã chết bằng rung cây |