मैं एक छवि (.png) को एक सूची में तोड़ने, सूची को संपादित करने और फिर संपादित छवि को फ़ाइल के रूप में सहेजने का प्रयास कर रहा हूं।

छवि को संपादित करने के बाद, और इसे एक सरणी में पुनर्स्थापित करने के बाद, mpl.imshow(image) नई छवि को सही ढंग से प्रदर्शित करता है, हालांकि इसे फ़ाइल के रूप में सहेजने का प्रयास करने पर एक रिक्त छवि प्राप्त होती है।

मेरा मानना ​​​​है कि दोष # <-- Estimated point of failure चिह्नित लाइन में है, लेकिन मैंने कमांड की खोज की है और समस्या का कोई समाधान नहीं ढूंढ सकता है। मैंने print() का उपयोग करके पुनर्निर्मित सरणी की जांच की है, और कुछ भी असामान्य नहीं लगता है।

फ़ाइल रूप में मैं अपनी संपादित छवि को सही ढंग से कैसे सहेज सकता हूं, इस पर कोई विचार की सराहना की जाएगी।

आपकी मदद के लिए धन्यवाद, लोचलान एफ।

import numpy as np
import matplotlib.pyplot as mpl
from PIL import Image

# Desconstruct the image into an editable list
img = Image.open('mini.png')
my_dot_array = np.asarray(img)
my_dot_list = my_dot_array.tolist()
my_dot_list[0][0] = [30, 220, 90, 255] # <-- Attemp a small edit to a pixel in the image

# Reconstuct the image into a saved .png file
my_dot_array = np.asarray(my_dot_list)
img = Image.fromarray(my_dot_array, mode='RGBA') # <-- Estimated point of failure
img = img.save('updated_mini.png')

# Display the resulting image
mpl.imshow(my_dot_array)
mpl.show()


#print(my_dot_array)
2
Lochlann Freitag 9 नवम्बर 2021, 03:07

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि आप एक लाइन आउट हैं। ऊपर की पंक्ति को दूसरे पैरामीटर dtype=np.uint8 की आवश्यकता है:

my_dot_array = np.asarray(my_dot_list, dtype=np.uint8)
1
Mark Setchell 9 नवम्बर 2021, 03:11
बहुत - बहुत धन्यवाद!
 – 
Lochlann Freitag
9 नवम्बर 2021, 03:47