1
任務是製作兩個功能,一個將灰度圖像嵌入到RGB中。第二個顯示隱藏的「水印」。我已經完成了任務(有15個測試代碼必須通過,我將它們全部傳遞給D),但是如果可能的話,我想整理一下我的代碼。有人告訴我,我可以使用裁剪功能將水印置於照片的上方(我不知道如何操作),而是使用了數學邏輯。在python(PIL)中將另一個圖像放在另一個圖像的上方,然後將另一個圖像隱藏在另一個內部
from PIL import Image
#function for embedding the watermark
def add_watermark(clean_file, watermark_file):
#if the files are not compatible
#or doesn't exist end the function
try:
clean_photo = Image.open(clean_file)
watermark_photo = Image.open(watermark_file)
except:
return False
#the images pixels tuple values are attained
clean_photo_size = clean_photo.size
watermark_photo_size = watermark_photo.size
# .load was used to return a pixel access object
# that can be used to read and modify pixels
#for both images
photo_array = clean_photo.load()
watermark_array = watermark_photo.load()
#centring the watermarked image on the photo
start_x_coord=int((clean_photo_size[0]-watermark_photo_size[0])/2)
start_y_coord=int((clean_photo_size[1]-watermark_photo_size[1])/2)
#for the pixels that share the same position as the pixels in the
#watermark, manipulate their RGB tuple value to include the watermarks
#greyscale value as part of the original RGB tuple
for line in range(watermark_photo_size[0]):
for rank in range(watermark_photo_size[1]):
photo_array [(start_x_coord+line),\
(start_y_coord+rank)]\
=(int(((photo_array [(start_x_coord+line),\
(start_y_coord+rank)][0]/10)*10)\
+((watermark_array[line,rank]/100)%10)),\
int(((photo_array [(start_x_coord+line),\
(start_y_coord+rank)]\
[1]/10)*10)+((watermark_array[line,rank]/10)%10)),\
int(((photo_array [(start_x_coord+line),\
(start_y_coord+rank)][2]/10)*10)\
+(watermark_array[line,rank]%10)))
#create a new file name with _X at the end
new_File_Name = clean_file[:-4]+"_X"+clean_file[-4:]
#create a new file
clean_photo.save(new_File_Name)
#return true for the test
return True
我試圖讓這個職位的拼寫和語法是正確的,但我一直清醒20小時,所以我現在很抱歉,如果我錯過了什麼。