Как получить размеры изображения (Ш x В, в пикселях) из пути к файлу, а затем для вывода?

#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.