0
(0)

Midjourney在 Discord 中生成的 4合1 圖片,如果你對其中一張圖片滿意,你可以再點選一次放大按鈕。但是不難發現,如果你將 4合1 圖片下載下來後,在 Windows 電腦上它的大小為 1024x1024 畫素,在 Mac 電腦上它的大小為 2048x2048 畫素,細心的你肯定會發現,原來這張4合1的圖片都是分別由一樣畫素大小拼在一起的大圖。

但大家都知道,生成一次圖片會扣除一次 Fast Time,如果你再放大一次,還會再扣除一次 Fast Time。通常每次扣除的時間是 0.02 小時,這意味著如果你想要獲取到最終想要的那張大圖,你需要 0.02+0.02=0.04 小時。但是 Midjourney 並不是為你放大圖片,其實圖片在你生成的時候就已經是那麼大了。你選中哪個數字的圖片,它也只是把那張圖片供你下載而已。

midjourney

如果是 16:9、4:3 等其他比例出的圖片,它們也都是由 4x4 的小圖組合成一張大圖的。

所以我們無非就是要想辦法把 4合1 的圖片下載下來,然後怎麼把它平均切割出來就可以了。這個需求如果用Python處理是非常容易實現的,所以想像以後你只要保存4合1的圖片即可,不需要再讓Midjourney幫你放大了。如果你嫌棄輸出的圖不夠大,那就是將輸出的圖再去AI放大即可(後續再說)。這樣做的目的,你懂的!

感謝支援《波哥分享》原創文章!

原文標題:Midjourney 4合1大圖自動分割成4×4小圖

原文網址:https://www.booooker.com/502.html

好了,廢話不多說,以下是波哥寫的Python程式碼可針任意比例的 4合1 圖片切割成4等分的圖。創作不易,轉載請注明出處。謝謝合作!

"""
Author: booooker.com
Date: 2023-07-31
Description: This is a Python script that split Midjourney's 4in1 photo.
"""
import os
import sys
from PIL import Image

def split_all_images_in_folder(folder_path, num_cols=2, num_rows=2):
# Create the output folder if it does not exist
output_folder = os.path.join(folder_path, "output")
if not os.path.exists(output_folder):
os.mkdir(output_folder)

# Get a list of all image files in the specified folder
image_files = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp', '.tiff', '.ico', '.svg'))]

# Iterate through each image file and split it into multiple parts
for image_file in image_files:
# Open the image and get its size
image = Image.open(image_file)
width, height = image.size

# Calculate the size of each cropped image based on the number of columns and rows
cropped_width = width // num_cols
cropped_height = height // num_rows

# Crop the image into multiple parts
cropped_images = []
for row in range(num_rows):
for col in range(num_cols):
left = col * cropped_width
right = (col + 1) * cropped_width
top = row * cropped_height
bottom = (row + 1) * cropped_height
cropped_images.append(image.crop((left, top, right, bottom)))

# Get the directory path and base filename of the input image
directory, filename = os.path.split(image_file)
# Get the filename without the extension
filename_without_extension, extension = os.path.splitext(filename)

# Save the cropped images with the same filename as the original image in the output folder
for i, cropped_image in enumerate(cropped_images):
# Construct the output file path by appending _{i+1}. to the input filename
output_file_path = os.path.join(output_folder, "{}_{}.{}".format(filename_without_extension, i + 1, extension[1:]))
cropped_image.save(output_file_path, format=extension[1:])

print("Image {} split into {} parts!".format(image_file, len(cropped_images)))

if __name__ == '__main__':
folder_path = "your folder path goes here"
if not os.path.isdir(folder_path):
print("Invalid folder path.")
else:
num_cols = 2
num_rows = 2
split_all_images_in_folder(folder_path, num_cols, num_rows)

以上程式碼複製下來使用的時候,記得要把folder_path = "your folder path goes here"改成你存放 4in1 圖片的路徑。執行指令碼後,它會自動識別資料夾中的所有圖片並將4等分後存放到同目錄output資料夾下。

以上代码还可以新增如定期检测资料夹下是否有新增图片,如有,4等分,或者分割完成后的原图保存在同目录Finished资料夹下防止二次处理,这样的代码由于需要较深入,就不在这里说明了。

這篇文章對你有幫助嗎?

給個5星好評吧?

平均分 0 / 5. 評價計數: 0

還沒有人評價哦~

抱歉喲~如果您覺得不好,可以聯絡我們進行質量提升喲!

期待您的反饋

Tell us how we can improve this post?

猜你喜歡

轉載請保留原文連結:https://www.booooker.com/502.html
  1. 本站所有文章,如無特殊說明或標註,均為本站原創釋出。在未徵得本站同意時,禁止複製、盜用、採集、釋出本站內容。
  2. 本站資源僅供研究、學習交流之用,若使用商業用途,請購買正版授權,否則產生的一切後果將由下載使用者自行承擔。
  3. 如若本站內容侵犯了原著者的合法權益,可聯絡我們進行處理。 聯絡方式(#替換成@):info#booooker.com