Tôi có nội dung HTML chuỗi được tải vào phương thức webEngine
theo phương thức loadContent()
. Tôi cũng có một số tệp css và hình ảnh được sử dụng trong trang này. Mặc dù tôi đặt các tệp này vào cùng một gói của lớp java, trang được tải không thể tìm thấy chúng. Đã tìm tài liệu API và web nhưng không tìm thấy bất kỳ giải pháp tương tự nào phù hợp. Làm cách nào để tải các tệp này?Cách tiếp cận tệp css và hình ảnh từ trang html được tải bởi javafx.scene.web.WebEngine # loadContent?
Trả lời
Bạn cần phải thiết lập đường dẫn địa phương của bạn trong chuỗi html cho loadContent
cách tiếp theo:
view.getEngine().loadContent(
"<img src='" + getClass().getResource("1.jpg") + "' />");
Bạn có thể đặt chuỗi nội dung html của bạn trong một tập tin trong gói giống như lớp Java và sử dụng phương pháp engine.load(String url)
thay :
engine.load(getClass().getResource("mypage.html").toExternalForm());
Khi bạn thực hiện việc này, tất cả các liên kết tương đối trong trang html sẽ giải quyết tài nguyên (ví dụ: css và tệp hình ảnh) trong gói Java của bạn.
Hãy coi chừng rằng nếu bạn đang tải tài nguyên nằm trong tệp jar, giao thức jar:
không hiểu liên kết tương đối với chỉ định cha mẹ. Ví dụ: <img src="../images/image.png"/>
sẽ không hoạt động nhưng <img src="/images/image.png"/>
hoặc <img src="images/image.png"/>
sẽ dài (khi bạn đặt hình ảnh vào vị trí thích hợp trong tệp jar). Giao thức file:
không có giới hạn như vậy và ..
liên kết tương đối sẽ hoạt động tốt khi tài nguyên được tải bằng cách sử dụng nó.
Nếu chuỗi html được tạo động bởi mã java của bạn chứ không phải tĩnh, thì giải pháp của Sergey có lẽ là tốt nhất.
Tôi vừa phát hiện ra rằng việc sử dụng thẻ <base>
trong HTML cũng hiện các trick:
<html>
<head>
<title>The slash at the end of the href is important!</title>
<base href="file:///absolute/path/to/your/docroot/" />
</head>
<body>
<img src="image.png"/>
</body>
</html>
Nếu bạn tải đoạn mã trên qua engine.loadContent(String)
sau đó image.png
sẽ được nạp từ /absolute/path/to/your/docroot/image.png
.
Phương pháp này dễ dàng hơn nếu bạn cần tải nhiều tài nguyên vì bạn chỉ phải chỉ định đường dẫn tuyệt đối tại một nơi duy nhất.
Điều này đã được thử nghiệm với WebView
của Java 8u25.
Hãy thử điều này
<link href="file:css\default.css" rel="stylesheet" type="text/css" />
- 1. Cách tiếp cận bảo mật tải lên hình ảnh PHP
- 2. Tiếp cận hình ảnh với url CSS() trong Primefaces
- 3. Cách tiếp cận được khuyến nghị để tải tệp hình ảnh nhị phân độc quyền vào NSImage?
- 4. HTML 5 Hình ảnh tải tệp làm hình nền
- 5. MỌI MỌI hình ảnh trong tải tệp CSS khi tệp được tải chưa?
- 6. CSS và hình ảnh trên Trang chính
- 7. Android: Cách tham chiếu hình ảnh nội dung từ trang html được tải từ xa trong chế độ xem web
- 8. Cách lưu hình ảnh và tệp html trong PhoneGap
- 9. CSS Image layouting trước khi hình ảnh được tải
- 10. Tải xuống trang html và nội dung của trang
- 11. Android: Cách nhận html hoàn chỉnh, với hình ảnh và tệp css dưới dạng chuỗi?
- 12. Cách tiếp cận xác thực nhiều trang
- 13. Hiển thị hình ảnh liên tiếp (HTML)
- 14. cách tải hình ảnh từ trang web trong java
- 15. Symfony2 - Assetic - tải hình ảnh trong CSS
- 16. Cách chỉ định đường dẫn hình ảnh trong tệp CSS?
- 17. Tôi có thể in các tệp html (có hình ảnh, css) từ dòng lệnh không?
- 18. Cách nhanh nhất và dễ nhất để tải xuống tất cả hình ảnh từ trang web
- 19. Chuyển đổi tệp .html sang hình ảnh
- 20. Nginx không tải được các tệp css
- 21. tải trước hình ảnh CSS ẩn
- 22. Hình ảnh được chia tỷ lệ là gì và cách tôi phân phát hình ảnh trong một trang web?
- 23. Tiếp cận đối số chức năng từ trang trí
- 24. html, css - lề vô hình lạ bên dưới hình ảnh
- 25. Đặt hàng các tệp css và js được tải bởi Meteor
- 26. Làm cách nào để tạo tệp PDF từ nguồn HTML/CSS (bao gồm hình ảnh) bằng Python?
- 27. App_offline.htm, CSS, hình ảnh và aspnet_isapi.dll
- 28. mod_rewrite không tải tệp css và js
- 29. Tiếp cận một hình ảnh động từ res thư mục android
- 30. HTML/CSS - tạo mặt nạ alpha trên hình ảnh
Bạn có biết làm thế nào để làm điều này cho một BufferedImage trong bộ nhớ? – alistair
@alistair bạn có thể sử dụng lớp ImageIO, nó có một phương thức để đọc Ảnh đệm. –