Tôi đang cố tạo một chương trình chỉnh sửa hình ảnh đơn giản trong java. Tôi đã tạo một đối tượng ImageCanvas
có tất cả thông tin về hình ảnh đang được chỉnh sửa (một số thuộc tính cơ bản, danh sách các hiệu ứng đang được áp dụng, danh sách các lớp BufferedImage
, v.v.) và tôi muốn một cách đơn giản để lưu nó vào đĩa có thể được mở lại sau.Cách sắp xếp một đối tượng bao gồm BufferedImages
Tôi nhận thấy rằng bằng cách sử dụng giao diện Serializable
defualt của Java có thể chính xác những gì tôi đang tìm kiếm và tôi có thể viết toàn bộ đối tượng đó để đọc và đọc lại vào bộ nhớ sau. Tuy nhiên, ImageCanvas
bao gồm ArrayList<BufferedImage>
và BufferedImage
không thể tuần tự hóa được (mọi thứ khác).
Tôi biết nó có thể ghi đè lên các phương pháp writeObject()
và readObject()
, nhưng tôi chưa bao giờ làm như vậy và tôi đã tự hỏi nếu có bất kỳ cách dễ dàng để có Java serialize mọi thứ khác và có một số cách tùy chỉnh để đọc/viết BufferedImage
vào đĩa? Hoặc là có một số cách khác để dễ dàng viết toàn bộ đối tượng ImageCanvas
vào đĩa mà tôi đang xem? Cuối cùng tôi có thể thực hiện loại tệp hình ảnh tùy chỉnh của riêng mình, nhưng ngay bây giờ tôi muốn một cách nhanh chóng và dễ dàng để lưu tệp tạm thời trong khi tôi đang thử nghiệm (lớp ImageCanvas
sẽ thay đổi rất nhiều, vì vậy tôi không muốn tiếp tục cập nhật loại tệp tùy chỉnh của tôi trước khi tôi hoàn thành tệp).
Tôi có thể sử dụng nó như thế nào. phương pháp là riêng tư. – avicennasoftwarelabs
@avicennasoftwarelabs, Chỉ cần triển khai writeObject và readObject sẽ cho Java serialization sử dụng các phương thức đó khi serializing/deserializing đối tượng của bạn, mặc dù các phương thức là private. –
Thật không may là bộ giải mã PNG trong ImageIO có lỗi trong đó, có nghĩa là dữ liệu bạn đọc lại không giống với dữ liệu bạn viết (màu sắc thường bị tắt bởi 1) – mjaggard