Hướng dẫn node js puppeteer html to image - node js puppeteer html sang hình ảnh
bởi Ryan Glover Show
Bắt đầuĐối với hướng dẫn này, chúng tôi sẽ sử dụng SOULERPLATION Node.js Cheatcode Node.js làm điểm bắt đầu. Điều này sẽ cung cấp cho chúng tôi một nền tảng vững chắc để xây dựng mà không cần nhiều mã tùy chỉnh. Để bắt đầu, nhân bản Boilerplate từ GitHub:
Và sau đó, 8 vào thư mục và cài đặt các phụ thuộc:
Tiếp theo, cài đặt gói 9:
Cuối cùng, một khi tất cả các phụ thuộc được cài đặt, hãy khởi động máy chủ với:
Với tất cả những điều này hoàn tất, bước đầu tiên của chúng tôi sẽ là thiết lập một tuyến đường nơi chúng tôi sẽ hiển thị hình ảnh của chúng tôi để thử nghiệm. Thêm một tuyến đường trên máy chủ để thử nghiệmBên trong dự án nhân bản, hãy mở tệp 0 từ gốc của dự án:
Ở đây, 1 đại diện cho phiên bản ứng dụng Express.js được thiết lập cho chúng tôi trong bản sao trong 2. Chúng tôi sẽ sử dụng điều này để tạo tuyến đường thử nghiệm của chúng tôi:
Dễ như ăn bánh. Để kiểm tra nó, với máy chủ của bạn đang chạy, hãy mở trình duyệt của bạn và hướng tới 3 và bạn sẽ thấy "Kiểm tra 123" được hiển thị.Dây máy tạo hình ảnh bằng cách sử dụng puppeteerTiếp theo, chúng ta cần nối dây tạo hình ảnh của chúng ta. Để làm điều đó, chúng tôi sẽ tạo một mô -đun riêng mà chúng tôi có thể nhập bất cứ nơi nào chúng tôi muốn chuyển đổi HTML thành một hình ảnh trong ứng dụng của chúng tôi:
Để bắt đầu, chúng tôi nhập 9 từ gói chúng tôi đã cài đặt trước đó. Tiếp theo, chúng tôi thiết lập chức năng 5 của mình, lấy một chuỗi 6 duy nhất làm đối số.
Đầu tiên, chúng ta cần tạo một thể hiện múa rối. Để làm điều đó, chúng tôi sử dụng 7. Lưu ý rằng ở đây, chúng tôi đang sử dụng cú pháp Async/Await của JavaScript vì chúng tôi hy vọng 7 sẽ trả lại cho chúng tôi một lời hứa. Bằng cách sử dụng từ khóa 9 ở đây, chúng tôi sẽ nói với JavaScript và bằng cách mở rộng, Node.js, để đợi cho đến khi nhận được phản hồi từ 7.Tiếp theo, với 1 của chúng tôi được tạo, chúng tôi tạo 2 với 3 (nghĩ về điều này giống như mở một tab trong trình duyệt của riêng bạn, nhưng ở trạng thái "không đầu", có nghĩa là không có giao diện người dùng nào chỉ tồn tại trong bộ nhớ). Một lần nữa, chúng tôi dự đoán một lời hứa sẽ được trả lại, vì vậy chúng tôi ____29 cuộc gọi này trước khi tiếp tục.
Tiếp theo, chúng tôi đi vào phần quan trọng. Ở đây, sử dụng 5, chúng tôi bảo Puppeteer để điền vào trang trình duyệt với chuỗi 6 mà chúng tôi đã chuyển vào chức năng của mình như một đối số. Điều này tương đương với bạn đang tải một trang web trong trình duyệt của bạn và HTML từ phản hồi của máy chủ được tải vào bộ nhớ.Tiếp theo, chúng tôi sử dụng API DOM (mô hình đối tượng tài liệu) tích hợp của Puppeteer để truy cập HTML của trình duyệt trong bộ nhớ. Ở đây, trong biến 7 của chúng tôi, chúng tôi lưu trữ kết quả của việc gọi 8. Những gì nó đang làm là lấy phiên bản kết xuất trong bộ nhớ của HTML của chúng tôi và trích xuất các ____37 của thẻ 0 (HTML được hiển thị của chúng tôi).Đáp lại, chúng tôi lấy lại một nghệ sĩ múa rối 1, đó là cách nói "yếu tố như nó được thể hiện trong bộ nhớ của Puppeteer," hoặc, HTML được hiển thị của chúng tôi như một đối tượng thân thiện với người đi múa rối.Tiếp theo, sử dụng 7 đó, chúng tôi sử dụng phương pháp Puppeteer 3 để chụp ảnh màn hình của trang HTML được hiển thị trong bộ nhớ của chúng tôi. Để kiểm soát hoàn toàn những gì được hiển thị trong hình ảnh của chúng tôi, chúng tôi chuyển 4 đến 5 để đảm bảo chúng tôi làm cho nền trang hoàn toàn minh bạch.Đáp lại, chúng tôi hy vọng sẽ lấy lại 6. Đây là nội dung tệp hình ảnh thô, nhưng không phải là hình ảnh thực tế (có nghĩa là bạn sẽ thấy một loạt dữ liệu nhị phân ngẫu nhiên, không phải là hình ảnh). Trước khi chúng ta thấy làm thế nào để có được hình ảnh thực tế của mình, chúng ta cần phải làm sạch một số:
Ở đây, chúng tôi đã thêm hai cuộc gọi: 7 và 8. Có thể dự đoán, chúng đóng trang (hoặc tab trình duyệt) mà chúng tôi đã mở trong bộ nhớ cũng như trình duyệt. Điều này rất quan trọng để thực hiện bởi vì nếu cuối cùng bạn không để các trình duyệt không được xử lý trong bộ nhớ làm cạn kiệt tài nguyên của máy chủ của bạn (và có thể gây ra sự cố tiềm năng do tràn bộ nhớ).This is very important to do because if you don't you end up leaving unclosed browsers in memory which depletes your server's resources (and can cause a potential crash due to memory overflow).Cuối cùng, chúng tôi trả lại 6 được truy xuất từ chức năng.Hiển thị hình ảnh trên tuyến đường của chúng tôiThêm một bước. Về mặt kỹ thuật, tại thời điểm này, chúng tôi đã không chuyển bất kỳ HTML nào cho chức năng của mình. Hãy nhập 5 trở lại vào tệp 0 của chúng tôi và gọi nó từ tuyến đường của chúng tôi: 0Ở đây, chúng tôi đã nhập chức năng 2 của chúng tôi từ 3. Trên cuộc gọi lại cho tuyến đường của chúng tôi, chúng tôi đã thêm cờ 4 bởi vì, bây giờ, chúng tôi đang sử dụng từ khóa 9 trước hàm 5 của chúng tôi. Hãy nhớ rằng, điều này là cần thiết bởi vì chúng ta cần phải chờ đợi Puppeteer để thực hiện công việc của mình trước khi chúng ta có thể dựa vào nó trả lại dữ liệu cho chúng ta.Ngoài cuộc gọi của chúng tôi, chúng tôi cũng đã sửa đổi cách chúng tôi trả lời yêu cầu tuyến đường. Tại đây, chúng tôi đã thêm một cuộc gọi đến 7, đặt tiêu đề 8 thành 9. Hãy nhớ làm thế nào chúng tôi đã đề cập rằng 6 mà chúng tôi đã nhận được từ 1 về mặt kỹ thuật chưa phải là một hình ảnh? Đây là những gì thay đổi mà. Ở đây, 9 được gọi là loại MIME; Một kiểu dữ liệu được công nhận bởi các trình duyệt nói rằng "dữ liệu thô tôi cung cấp cho bạn nên được hiển thị là ___." Trong trường hợp này, chúng tôi đang nói "hiển thị dữ liệu thô này dưới dạng hình ảnh .png."Cuối cùng, là cơ quan phản hồi cho yêu cầu của chúng tôi, chúng tôi chuyển 6 đến 4. Với điều này, bây giờ, hãy thêm một số HTML vào hỗn hợp và sau đó cho thử nghiệm này: 1Ở đây, chúng tôi sẽ chuyển một chuỗi JavaScript đơn giản chứa một số HTML. Chúng tôi đã thiết lập một nồi hơi HTML cơ bản bao gồm thẻ 5 được điền với thẻ 6 và thẻ 0. Trong thẻ 6, chúng tôi đã thêm thẻ 9 chứa một số CSS để tạo kiểu cho nội dung HTML của chúng tôi.Trong 0, chúng tôi đã thêm một số thẻ HTML đơn giản: 1 được điền với thẻ 2. Bây giờ, nếu chúng ta quay trở lại tuyến thử nghiệm của mình tại 3 và bạn sẽ thấy một cái gì đó như thế này:Hình ảnh của chúng tôi hiển thị trong trình duyệt. Nhấp chuột phải và lưu như để tải nó vào máy tính của bạn.Tuyệt, phải không? Nếu bạn nhấp chuột phải vào hình ảnh và tải xuống, bạn sẽ có thể mở nó trên máy tính của bạn như bất kỳ hình ảnh nào khác. Trước khi chúng tôi kết thúc, thật tốt khi hiểu cách lưu trữ dữ liệu này vĩnh viễn thay vì chỉ hiển thị nó trong trình duyệt và tải xuống bằng tay. Tiếp theo, chúng ta sẽ xem xét hai phương pháp: lưu hình ảnh được tạo vào đĩa và lưu hình ảnh được tạo cho Amazon S3. Viết hình ảnh được tạo thành đĩaMay mắn thay, viết tập tin của chúng tôi vào đĩa khá đơn giản. Chúng ta hãy sửa đổi một chút cho tuyến đường của chúng tôi (chúng tôi vẫn sẽ sử dụng URL trong trình duyệt để "kích hoạt" thế hệ): 2Khá đơn giản. Ở đây, tất cả những gì chúng tôi đã thực hiện là được nhập 4 (hệ thống tệp trong node.js, ____________ 74 không cần phải cài đặt), sau đó thêm một cuộc gọi đến 6, chuyển đường dẫn mà chúng tôi muốn tệp của chúng tôi được lưu trữ (trong đó trường hợp, trong một tệp có tên 7 tại gốc của dự án của chúng tôi) và dữ liệu cho tệp.Lưu ý, lưu ý rằng đối với phần mở rộng tệp, chúng tôi đã đặt rõ ràng 9. Tương tự như những gì chúng tôi đã thấy hiển thị hình ảnh của chúng tôi trực tiếp đến tuyến đường của chúng tôi, rằng 9 truyền lại cho máy tính rằng nội dung của tệp này đại diện cho một hình ảnh ở định dạng 9.Bây giờ, khi chúng tôi truy cập tuyến đường của chúng tôi, tệp của chúng tôi sẽ được ghi vào 1 trên đĩa cũng như được hiển thị trong trình duyệt.Gửi hình ảnh được tạo đến Amazon S3Trước khi chúng ta đi xa hơn, để truy cập Amazon S3, chúng ta cần thêm một phụ thuộc mới: 2. Hãy cài đặt nó ngay bây giờ: 3Tiếp theo, mặc dù tương tự, gửi hình ảnh được tạo của chúng tôi đến Amazon S3 phức tạp hơn một chút. Để làm điều đó, chúng tôi sẽ tạo một tệp mới tại 3 để thực hiện một số mã để giúp chúng tôi kết nối với Amazon S3 và viết tệp của chúng tôi (được gọi là "đặt một đối tượng vào thùng"). 4Ở đây, chúng tôi nhập 4 từ 2 chúng tôi vừa cài đặt. Tiếp theo, chúng tôi đặt 6 bằng với một ví dụ mới là 7 (lưu ý sự khác biệt giữa các tên là vốn "C"), được thông qua thông tin mà chúng tôi muốn sử dụng để giao tiếp với AWS.Nếu bạn chưa có thông tin cần thiết, bạn sẽ muốn đọc hướng dẫn này bởi Amazon về cách tạo người dùng mới. Đối với ví dụ này, khi tạo người dùng của bạn, hãy đảm bảo bật "Truy cập chương trình" ở Bước một và đính kèm chính sách 8 theo "Đính kèm trực tiếp các chính sách hiện có" trong bước hai.Khi bạn đã tạo ID khóa truy cập và khóa truy cập bí mật của bạn, bạn có thể điền vào các trường ở trên. Cảnh báo công bằng: Không cam kết các chìa khóa này cho một repo GitHub công khai. Có những bot trên GitHub quét các phím AWS không được bảo vệ và sử dụng chúng để quay các trang trại bot và thực hiện hoạt động bất hợp pháp (trong khi làm cho bạn chân hóa đơn). Đối với 9, bạn sẽ muốn chỉ định khu vực bạn tạo xô Amazon S3 của mình. Vùng là vị trí địa lý của thùng của bạn trên Internet. Nếu bạn chưa tạo ra một cái xô, bạn sẽ muốn đọc hướng dẫn này của Amazon về cách tạo một thùng mới.Khi thiết lập xô của bạn, cho hướng dẫn này, hãy đảm bảo bỏ chọn "Chặn truy cập công cộng". Đây là một khung cảnh tốt cho môi trường sản xuất, nhưng vì chúng tôi chỉ chơi xung quanh, nên không kiểm tra nó là an toàn. Cảnh báo công bằng: Không lưu trữ bất kỳ dữ liệu nhạy cảm nào trong thùng này.Fair Warning: DO NOT store any sensitive data in this bucket. 5Khi chúng tôi đã định cấu hình Vùng người dùng và nhóm AWS IAM của chúng tôi, tiếp theo, chúng tôi muốn tạo một thể hiện là 0 bằng cách gọi đến 1.Suy nghĩ trước, chúng tôi muốn dự đoán sự cần thiết của các phương thức S3 khác sau này, vì vậy thay vì chỉ xuất một hàm duy nhất từ tệp của chúng tôi, ở đây, chúng tôi xuất một đối tượng bằng phương thức 2.Đối với phương thức đó (tên cho một hàm được xác định là một phần của đối tượng), chúng tôi dự đoán một đối tượng 3 sẽ được truyền chứa dữ liệu và hướng dẫn về cách xử lý tệp của chúng tôi. Trong phần thân của chức năng này, chúng tôi trả lại một lời hứa để chúng tôi có thể kết thúc phương thức 4 không đồng bộ từ gói 2.Khi chúng tôi gọi phương thức đó, chúng tôi sẽ chuyển các tùy chọn theo tài liệu SDK của Amazon S3, mô tả tệp của chúng tôi, nơi chúng tôi muốn nó sống và các quyền liên kết với nó. Trong phương thức gọi lại cho 4, giả sử chúng tôi không gặp lỗi, chúng tôi xây dựng một đối tượng mô tả vị trí của tệp mới của chúng tôi trên Amazon S3 và 7 Lời hứa mà chúng tôi đã trả lại từ hàm. 6Trở lại trong tệp 0 của chúng tôi, bây giờ chúng tôi đã sẵn sàng tải lên S3. Sửa đổi mã của chúng tôi từ trước đó một chút, chúng tôi nhập tệp 0 của chúng tôi từ 3 ở trên cùng và sau đó trong phần thân của cuộc gọi lại của tuyến đường, chúng tôi thêm cuộc gọi của chúng tôi vào 4, chuyển trong 02 Chúng tôi muốn tệp của chúng tôi được lưu trữ, 03 ( Tên đường dẫn và tên tệp liên quan đến gốc của nhóm của chúng tôi) cho tệp của chúng tôi, 04 (dữ liệu RAW 6) và 06 (cùng loại 9 mà chúng tôi đã thảo luận trước đó).Cuối cùng, chúng tôi đảm bảo 9 cuộc gọi của chúng tôi đến S3 để đảm bảo rằng chúng tôi lấy lại tệp của mình. Trong ứng dụng của riêng bạn, điều này có thể không cần thiết nếu bạn ổn với tệp được tải lên trong nền.Đó là nó! Bây giờ, nếu chúng tôi truy cập 3 trong ứng dụng của mình, chúng tôi sẽ thấy đồ họa được tải lên Amazon S3, sau đó là xác nhận được đăng xuất trong thiết bị đầu cuối: 7Gói lênTrong hướng dẫn này, chúng tôi đã học cách tạo hình ảnh từ HTML và CSS bằng cách sử dụng Puppeteer. Chúng tôi đã học được cách quay một trình duyệt trong bộ nhớ, vượt qua một số HTML, và sau đó chụp ảnh màn hình của trang được hiển thị bằng cách sử dụng Puppeteer. Chúng tôi cũng đã học được cách trả lại hình ảnh của mình cho trình duyệt trực tiếp cũng như cách lưu trữ tệp đó trên đĩa bằng hệ thống tệp Node.js và tải hình ảnh của chúng tôi lên Amazon S3 bằng cách sử dụng SDK AWS JavaScript. Làm thế nào để bạn tạo ra một bức tranh từ một nghệ sĩ múa rối?Tải xuống hình ảnh từ một trang web.. Tạo một tệp mới. Trong cùng một dự án, tạo chỉ mục. .... Nhập các mô -đun. Bên trong chỉ số. .... Viết mã để tải xuống hình ảnh. Sau đó, viết mã sau: .... Tạo một thư mục mới cho hình ảnh. Trước khi thực thi mã, hãy tạo một thư mục con mới /hình ảnh trong thư mục hiện tại. .... Chạy mã .. Làm cách nào để hiển thị hình ảnh trong Node JS?Các bước để chạy chương trình:.. Cài đặt Express bằng lệnh sau: NPM Cài đặt Express .. Chạy tệp Server.js bằng lệnh sau: Node Server.js .. Mở bất kỳ trình duyệt nào và để đi http: // localhost: 3000/hình ảnh/geeksforgeek.png và bạn sẽ thấy đầu ra sau:. Làm thế nào để bạn biến một chú chó con thành PDF?Phương pháp 1: Tải xuống PDF từ trang web bằng URL.. Tạo một thể hiện trình duyệt và một trang mới.Đầu tiên, một phiên bản trình duyệt Chrome được tạo ở chế độ không đầu (Puppeteer chạy không đầu theo mặc định, chúng ta không phải nêu nó trong tham số)..... Điều hướng đến một URL..... Định cấu hình đầu ra..... Tải xuống PDF..... Đóng trình duyệt .. Node JS có tốt cho xử lý hình ảnh không?Với xử lý hình ảnh, ứng dụng của bạn có thể thay đổi kích thước và nén tất cả các hình ảnh do người dùng tải, có thể cải thiện đáng kể hiệu suất ứng dụng của bạn và lưu không gian đĩa máy chủ của bạn.Node.js có một hệ sinh thái của các thư viện bạn có thể sử dụng để xử lý hình ảnh, chẳng hạn như mô -đun SHARP, JIMP và GM.Node. js has an ecosystem of libraries you can use to process images, such as sharp, jimp, and gm module. |