Tôi có một hình ảnh. Tôi cần tạo một bản sao chính xác của nó và lưu nó vào BufferedImage, nhưng không có Image.clone(). Điều cần được bên trong một vòng lặp tính toán và vì vậy nó phải được thực sự nhanh chóng, không có sao chép pixel-by-pixel. Phương pháp perfomance tốt nhất để làm điều này là gì?Làm thế nào để sao chép hình ảnh?
Trả lời
Bạn có thể vẽ hình ảnh đệm, do đó, hãy tạo một hình trống bufferedImage, tạo ngữ cảnh đồ họa từ đó và vẽ hình ảnh gốc của bạn lên đó.
BufferedImage copyOfImage =
new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(originalImage, 0, 0, null);
Có một cách khác:
BufferedImage copyOfImage = image.getSubimage(0, 0, image.getWidth, image.getHeight);
Không, thao tác này sẽ không hoạt động vì 'copyOfImage' và' image' sẽ chia sẻ bộ đệm sao lưu (nó sẽ là bản sao nông). Các chỉnh sửa được thực hiện cho một, sẽ được phản ánh trong một chỉnh sửa khác. – haraldK
Image clone = original.getScaledInstance(original.getWidth(), -1, Image.SCALE_DEFAULT);
này có thể không phải rất đẹp, nhưng getScaledInstance
lợi nhuận, như tên cho thấy, một thể hiện của đối tượng gốc Image
của bạn. Thông thường chỉ được sử dụng để thay đổi kích thước. -1
cho biết phương pháp giữ tỷ lệ khung hình vì nó là
Bạn có thể vui lòng [sửa] câu trả lời của bạn để giải thích tại sao mã này trả lời câu hỏi? Các câu trả lời chỉ có mã được [nản lòng] (http://meta.stackexchange.com/questions/148272), bởi vì chúng không dạy giải pháp. – DavidPostill
- 1. Làm thế nào để sao chép hình matplotlib?
- 2. Làm thế nào để sao chép dữ liệu IPTC từ một hình ảnh khác?
- 3. Làm thế nào để sao chép một hình ảnh từ xa trong python?
- 4. Làm thế nào để sao chép hình ảnh mà không cần sử dụng clipboard?
- 5. Cách sao chép tệp hình ảnh? (2.2+)
- 6. Sao chép hình ảnh trong python cv2
- 7. Làm cách nào để đặt văn bản được sao chép sang clipboard khi hình ảnh được sao chép?
- 8. Làm thế nào để bạn sao chép một BufferedImage
- 9. Làm thế nào để sao chép mảng?
- 10. Làm thế nào để sao chép ImageData?
- 11. Làm cách nào để sao chép/sao chép một thư mục trên S3?
- 12. Làm thế nào để sao chép một biến ruby?
- 13. Làm thế nào để sao chép Danh sách để Mảng
- 14. Làm thế nào để sao chép hình ảnh vào thẻ sd giả lập Android từ đĩa cứng?
- 15. Làm thế nào để sao chép một khu vực hình ảnh bằng cách sử dụng opencv trong python?
- 16. sao chép và dán hình ảnh trong Edittext
- 17. Làm thế nào để sao chép/sao chép một môi trường ảo từ máy chủ web
- 18. Làm thế nào để sao chép/sao chép một bản ghi sql với CakePhp?
- 19. Sao chép hình ảnh vào clipboard bằng JavaScript/jquery
- 20. Làm thế nào để sao chép vào clipboard bằng X11?
- 21. làm thế nào để bạn sao chép một CALayer?
- 22. Làm thế nào để sao chép sâu một cây?
- 23. Làm thế nào để sao chép hành vi mảng?
- 24. Làm thế nào để sao chép Joda DateTime?
- 25. Làm thế nào để sao chép vào clipboard trong F #?
- 26. Làm thế nào để sao chép một lớp python?
- 27. Làm thế nào để sao chép đối tượng trong Qt?
- 28. Làm thế nào để sao chép đối tượng js?
- 29. Sao chép một hình ảnh, mất dữ liệu Exif
- 30. Sao chép Python trên đối tượng hình ảnh PIL
Hãy xem http://stackoverflow.com/questions/3514158/how-do-you-clone-a-bufferedimage – user219882
Bản sao này pixel theo pixel -pixel (chỉ sao chép dữ liệu raster). Có cách nào để làm nhanh hơn không? – Cenius
Nếu bạn muốn có một bản sao sâu, không có cách nào khác mà tôi biết. Và tại sao bạn muốn sao chép nó mỗi vòng lặp lặp lại? – user219882