#javascript #python #php
Вопрос:
Я пытаюсь ввести a filepath
в изображение на своем компьютере, извлечь высоту и ширину изображения в пикселях, а затем вывести эти цифры для последующего использования-в идеале в электронную таблицу Excel. Полный процесс сделает это для всех изображений в папке.
Для полного понимания того, что здесь происходит: Эта информация в конечном итоге будет использоваться для принятия решений в рамках всего рабочего процесса о том, в какие папки отправлять эти изображения на основе их размеров.
Например : изображения, размеры которых очень близки к квадрату 1:1, будут отправлены в папку «КВАДРАТ». Те, чьи размеры наиболее близки к размерам 3:2, будут отправлены в эту папку. И так далее. Полный процесс здесь в основном автоматизирует функцию оценки размеров изображений, чтобы определить, к каким стандартным форматам изображений они ближе всего, а затем соответствующим образом их разложить.
Все эти последующие шаги я буду выполнять внутри PowerAutomate-просто потому, что мне очень удобно работать внутри него и я мог бы легко выполнить остальную часть этого процесса с помощью PowerAutomate. Однако по какой-либо причине у них нет функции для получения свойств изображения (таких как высота и ширина изображения), а затем сохранения этой информации для последующего использования в качестве переменной.
Поэтому мне в основном нужно использовать какой-то быстрый и эффективный внешний метод сбора этих данных изображений-и тогда самым простым способом для меня, чтобы получить их, было бы просто записать эту информацию в электронную таблицу Excel.
Поскольку он будет перебирать все изображения в папке, ему потребуется записать данные изображения для изображения 1 в папке в строку 1, например, высоту изображения в пикселях, записанную в ячейку A1, ширину изображения в пикселях, записанную в B2. Информация об изображении 2 затем будет записана в A2 B2. И т.д. до завершения.
Есть какие-нибудь идеи о простейшем способе, которым я мог бы сделать это с помощью какой-нибудь компьютерной программы? Это может быть Javascript, действительно все, что я мог бы легко выполнить на своем локальном компьютере.
Я полный нуб, когда дело доходит до Javascript и т. Д. Только начинаю изучать основы. Если бы вы могли пойти дальше и просто снабдить меня шаблонной программой, которая бы выполнила это-с папкой изображений шаблона, которую я мог бы затем заменить своим путем к файлу, а также путем к файлу Excel шаблона, который я мог бы заменить тем, который я бы использовал (своего рода // ЗАМЕНИТЕ ПУТЬ К ФАЙЛУ ВАШЕЙ ПАПКИ ИЗОБРАЖЕНИЙ ЗДЕСЬ, введите сделку) — это было бы просто потрясающе! Даже просто какие-то обрывки, чтобы заставить меня двигаться, были бы очень полезны.
Я нашел онлайн-ресурс, рекомендующий что-то подобное (большинство изображений обложек через URL-адреса, а не пути к файлам), однако мне не повезло с успешным выполнением этого. Однако, похоже, это шаг в правильном направлении:
using (Image img = System.Drawing.Image.FromFile("C:UserssuppoPicturestestingthis-is-a-test-product-image-1.jpg")) { int height = img.Height; int width = img.Width; } alert("Current width=" width ", " "Original height=" height);
Затем вместо отображения выходных данных в виде предупреждающего сообщения в идеале вместо этого он записывал бы эти выходные данные в соответствующие ячейки электронной таблицы Excel, путь к файлу которой был бы указан где-то здесь. Затем все это просто зациклилось бы на всех изображениях в папке, и строка, в которую он записывал бы выходные данные, соответствовала бы текущему шагу в циклическом процессе-количество раз, которое он выполнял бы через цикл, очевидно, соответствовало бы количеству файлов в данной папке.
Ответ №1:
В итоге для этого был написан скрипт на Python. Неплохо для загрузки Python и начала с «Привет, мир!» около 3 часов назад!
import os directory = "C:\Users\suppo\Pictures\testing" APP_FOLDER = "C:\Users\suppo\Pictures\testing" totalFiles = 0 totalDir = 0 for base, dirs, files in os.walk(APP_FOLDER): print('Searching in : ',base) for directories in dirs: totalDir = 1 for Files in files: totalFiles = 1 print('Total number of files',totalFiles) print('Total Number of directories',totalDir) print('Total:',(totalDir totalFiles)) import xlsxwriter #create file (workbook) and worksheeet outWorkbook = xlsxwriter.Workbook("Testing Excel Python v1.xlsx") outSheet = outWorkbook.add_worksheet() for file_index, filename in enumerate(os.listdir(directory)): if filename.endswith(".jpg") or filename.endswith(".png"): from PIL import Image # get image filepath = 'C:\Users\suppo\Pictures\testing\' filename img = Image.open(filepath) # get width and height width = img.width height = img.height # display width and height print("The height of the image is: ", height) print("The width of the image is: ", width) outSheet.write(f"A{file_index 1}", width) outSheet.write(f"B{file_index 1}", height) outSheet.write(f"C{file_index 1}", "C:\Users\suppo\Pictures\testing\" filename) outWorkbook.close()
Ответ №2:
Должен ли это быть настоящий .xlsx
файл Excel? Если вы можете использовать CSV, вы можете использовать сценарий Powershell, подобный этому (убедитесь, что вы выполняете его из каталога, в котором размещены изображения).:
Get-ChildItem | ForEach-Object { $img = [System.Drawing.Image]::FromFile("$_") $width = $img.Width $height = $img.Height echo "$width,$height,$_" } | Out-File -FilePath "image-dimensions.csv"
Я запускаю это в Linux, поэтому формат пути к файлу будет другим, но в основном это то, как будет выглядеть выходной файл:
550,366,/home/example/Pictures/foo.jpg 256,256,/home/example/Pictures/bar.jpg 640,482,/home/example/Pictures/kitten.png
Затем вы можете просто импортировать CSV-файл в Excel.