Прощу помощи/совета у Фотошоп мастеров
+48
Не совсем уверен, что это нужный блог, но надеюсь художники достаточно часто пользуются фотошопом, чтобы знать разные трюки и фишки.
В общем, мне нужно найти способ вставлять между рядами пикселей на картинках пустые ряды, как бы раздвигая картинку. Не очень понятно, да? Понимаю, потому меня поисковик и не понял, когда я попытался нагуглить урок. Покажу на примере, что я хочу получить.
Есть условная картинка

и мне нужно чтобы фотошоп приводил её к вот такому виду

Только эту я сделал вручную и криво, а надо чтобы программа делал сама и ровно.
Надеюсь, кто-нибудь сможет подсказать.
В общем, мне нужно найти способ вставлять между рядами пикселей на картинках пустые ряды, как бы раздвигая картинку. Не очень понятно, да? Понимаю, потому меня поисковик и не понял, когда я попытался нагуглить урок. Покажу на примере, что я хочу получить.
Есть условная картинка

и мне нужно чтобы фотошоп приводил её к вот такому виду

Только эту я сделал вручную и криво, а надо чтобы программа делал сама и ровно.
Надеюсь, кто-нибудь сможет подсказать.
32 комментария
А идея то интересная! Спасибо.
К дискорду циклы, это ж Питон! ;)
import numpy as np ... # Copy the original pixels to the new array new_img_data[::2, ::2] = img_data # Blacken every other column and every other row new_img_data[1::2, ::2] = 0 new_img_data[::2, 1::2] = 0Я не отлаживал, просто набросал так, чтоб идею показать.
from PIL import Image def insert_pixels(image_path): """Inserts a black pixel between each pixel of an image, making it twice as large. Args: image_path (str): The path to the input image. Returns: PIL.Image: The transformed image. """ img = Image.open(image_path) width, height = img.size # Create a new image twice as large new_width, new_height = width * 2, height * 2 new_img = Image.new(img.mode, (new_width, new_height)) # Iterate over the original image and insert pixels for y in range(height): for x in range(width): pixel = img.getpixel((x, y)) new_x = x * 2 new_y = y * 2 new_img.putpixel((new_x, new_y), pixel) new_img.putpixel((new_x + 1, new_y), (0, 0, 0)) new_img.putpixel((new_x, new_y + 1), (0, 0, 0)) new_img.putpixel((new_x + 1, new_y + 1), pixel) return new_img # Example usage image_path = "your_image.jpg" # Replace with your image path new_img = insert_pixels(image_path) new_img.save("new_image.jpg")Сейчас, я тогда проверю только, что все работает…
Вот первая исходная Флатти:
Вот Флатти в клеточку:
(я ее руками перегнал в GIF потому что табун не хочет принимать битмэп почему-то… На исходном битмэпе артефактов ГИФки нет.)
UPD
ВОт, JPG не так ее уродует:
Вот этот скрипт я гонял:
from PIL import Image def insert_pixels(image_path, output_path): """Inserts a black pixel between each pixel of an image, making it twice as large. Args: image_path (str): The path to the input image. output_path (str): The path to the output image. """ img = Image.open(image_path) width, height = img.size # Create a new image twice as large new_width, new_height = width * 2, height * 2 new_img = Image.new(img.mode, (new_width, new_height)) # Iterate over the original image and insert pixels for y in range(height): for x in range(width): pixel = img.getpixel((x, y)) new_x = x * 2 new_y = y * 2 new_img.putpixel((new_x, new_y), pixel) new_img.putpixel((new_x + 1, new_y), (0, 0, 0)) new_img.putpixel((new_x, new_y + 1), (0, 0, 0)) new_img.putpixel((new_x + 1, new_y + 1), pixel) new_img.save(output_path) # Prompt the user for the input image filename image_filename = input("Enter the input image filename (e.g., image.jpg): ") # Construct the full path to the input image #image_path = os.path.join("c:\\tmp", image_filename) # Prompt the user for the output image filename output_filename = input("Enter the output image filename (e.g., new_image.jpg): ") # Construct the full path to the output image #output_path = os.path.join("c:\\tmp", output_filename) insert_pixels(image_filename, output_filename)Завтра докую, если тебе еще надо, а то у меня тут уже первый час ночи ;)
Теперь уже просто из любопытства доделаю.
Справедливый вопрос. И ответ прост — я думал о том, как увеличить пиксельарт не увеличивая размер пикселей, а увеличивая их число. При этом постараться не слишком сильно испортить картинку. К сожалению как художник я очень не очень и приходится полагаться на такие странные идеи. В итоге получилось… не однозначно.
Тест я провёл всё на той же малышке Флатти, раз уж она есть в посте. Метод я взял подсказанный Aelmaris. Итак.
Берём пиксельарт Флатти в оригинальном размере пикселей
Увеличиваем её в два раза с чёткими краями
Затем накладываем сетку
Сливаем слои, выделяем волшебной палочкой сетку и удаляем её
Получается сетка пикселей.
Теперь берём пипетку и карандаш и подрисовываем границы и заливкой заливаем внутреннюю часть
Итоговый результат… на тройку с минусом. Но, думаю, если попытаться так увеличить не поню с множеством плавных линий, а, к примеру, дом пиксельный, то получится лучше. Или нет, не пробовал ещё.
Щитаю, это уже тянет на четвёрочку. С минусом =D