С Новым годом! Форум программистов, компьютерный форум, киберфорум
Софт: Графические редакторы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
1
Windows

Пакетная обработка с изменением размера изображения и имени файла

01.03.2021, 17:12. Показов 2319. Ответов 10

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.
Пример.
Есть каталог с подкаталогами, где находятся изображения. (пусть будет D:\222\)
Необходимо у всех изображений, по длинной стороне, превышающее значение в 1024 пикселя, изменить это значение на 1024, пропорционально уменьшив и другую сторону, меньшие пропустить.
Сохранив при этом ВСЕ изображения с новым именем ###.JPG качество 80. (или заменив предыдущие, или удалить оригиналы)
Сейчас делаю это в FastStone Image Viewer.
НО решил оптимизировать указанный процесс, до запуска бат файла.
Пробовал ImBatch (64-bit) но там автоматизировать до БАТ файла только платно. К сожалению, не вариант, так как изображения для сайта сельской школы, а там с оплатой туго.
Наткнулся в сети на nconvert, но не смог разобраться как работает именно с каталогами. Через XnViewMP даже создавал файл конфигурации, но запустить не получилось.
Тут на форуме узнал о GraphicsMagick прочел в сообщении от FlasherX, но пока даже не смотрел что и как.
Прошу совета.
Какой вариант выбрать, так сказать, в каком направлении копать, прям на качество фото налегать нет необходимости так как они порой изначально плохого качества.
А вот на уменьшение размера при сохранении исходного/приемлемого качества очень хотелось бы наедятся так как каждый кб на счету.

Добавлено через 3 часа 21 минуту
Получилось вот так.
Windows Batch file
1
2
@chcp 1251
FOR /f "delims=*" %%A IN ('dir *.jpg /b /s')  do "D:\111\NConvert\nconvert" -ratio -rtype lanczos -resize longest 1024  -o ### -q 80 -opthuff "%%A"
Но вот беда.
1. nconvert складывает все файлы в текущий каталог, а мне необходимо что бы он копировал их в исходный каталог.
2. Что-то я видать напутал и он именует файлы 001.JPG, 001_1.JPG, 001_2.JPG и т.д. А не 001.JPG, 002.JPG, 003.JPG.

Добавлено через 8 минут
Изменил код вот так параметр -o $

Windows Batch file
1
2
@chcp 1251
FOR /f "delims=*" %%A IN ('dir *.jpg /b /s')  do "D:\111\NConvert\nconvert" -ratio -rtype lanczos -resize longest 1024  -o $ -q 80 -opthuff "%%A"
Стал сохранять внутри каталогов. НО вот беда имя первого файла пустое. а потом идет _1.JPG, _2JPG и т.д.

Добавлено через 41 минуту
Изменил код вот так.

Windows Batch file
1
2
@chcp 1251
@for /R D:\333\ %%A in (*.png *.jpg *.jpeg *.gif *.bmp) do "D:\111\NConvert\nconvert" -ratio -o $ -rtype lanczos -resize longest 1024 -q 80 -opthuff "%%A"
Но не могу понять, почему он имена не создает у новых файлов, плохо когда не не понимаешь чего делаешь и делаешь методом тыка и подбора, прям беда какая-то вот почти то что нужно, а до конца доделать не могу.
Ладно утро вечера мудренее может завтра смогу додуматься или может подскажет кто ни будь :-)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.03.2021, 17:12
Ответы с готовыми решениями:

Загрузка изображения с изменением имени, размера…
Привет всем! Мне нужно через форму загрузить фото (картину) на сервер, изменить размер, имя, объем...

VBS Пакетная обработка, с созданием и изменением аттрибутов времени, переименовании
VBS Пакетная обработка jpg, с созданием и изменением аттрибутов времени. Задача обработка jpg...

Работа с изменением размера изображения
Доброго времени суток. Есть анимированный блок с картинками (в виде страниц). При наведении на...

Пакетная обработка в Excel (открытие, обработка, экспорт в .PDF)
Здравствуйте! Хотел бы попросить помочь мне в написании макроса, самому это сделать ума не...

10
6353 / 2778 / 1074
Регистрация: 06.06.2017
Сообщений: 9,428
01.03.2021, 19:32 2
Цитата Сообщение от NikolayHAOS Посмотреть сообщение
и делаешь методом тыка и подбора
Так $ не с потолка взято, правда? Логично предположить, что параметром к -o пойдёт $\###. Плюс к этому потребно указывать результирующий тип — -out jpeg.
1
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
01.03.2021, 22:42  [ТС] 3
Цитата Сообщение от FlasherX Посмотреть сообщение
$\###
вот о чем я и говорил...
+###
|###
$ ###
Чего я только не пробовал...
Благодарю от всей души, хоть ваш вариант еще не пробовал..
Утром...
0
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
02.03.2021, 08:08  [ТС] 4
Сделал.
Один хрен нумерует 001_1, 001_2.
И любопытная особенность, по новой обрабатывает созданные файлы.
Кликните здесь для просмотра всего текста
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
D:\333>2
Текущая кодовая страница: 1251
 
D:\333>"D:\111\NConvert\nconvert" -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "D:\333\5-eaccf9decf06 — копия (2).png"
** NCONVERT v7.70 (c) 1991-2019 Pierre-E Gougelet (Feb  1 2021/10:46:42) **
        Version for Windows Xp/Vista/7 x64  (All rights reserved)
** This is freeware software (for non-commercial use)
 
Conversion of D:\333\5-eaccf9decf06 — копия (2).png into D:\333\\001.jpg OK
 
D:\333>"D:\111\NConvert\nconvert" -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "D:\333\5-eaccf9decf06 — копия (3).png"
** NCONVERT v7.70 (c) 1991-2019 Pierre-E Gougelet (Feb  1 2021/10:46:42) **
        Version for Windows Xp/Vista/7 x64  (All rights reserved)
** This is freeware software (for non-commercial use)
 
Conversion of D:\333\5-eaccf9decf06 — копия (3).png into D:\333\\001_1.jpg OK
 
D:\333>"D:\111\NConvert\nconvert" -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "D:\333\5-eaccf9decf06 — копия.png"
** NCONVERT v7.70 (c) 1991-2019 Pierre-E Gougelet (Feb  1 2021/10:46:42) **
        Version for Windows Xp/Vista/7 x64  (All rights reserved)
** This is freeware software (for non-commercial use)
 
Conversion of D:\333\5-eaccf9decf06 — копия.png into D:\333\\001_2.jpg OK
D:\333>"D:\111\NConvert\nconvert" -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "D:\333\001.jpg"
** NCONVERT v7.70 (c) 1991-2019 Pierre-E Gougelet (Feb  1 2021/10:46:42) **
        Version for Windows Xp/Vista/7 x64  (All rights reserved)
** This is freeware software (for non-commercial use)
 
Conversion of D:\333\001.jpg into D:\333\\001_4.jpg OK
 
D:\333>"D:\111\NConvert\nconvert" -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "D:\333\001_1.jpg"
** NCONVERT v7.70 (c) 1991-2019 Pierre-E Gougelet (Feb  1 2021/10:46:42) **
        Version for Windows Xp/Vista/7 x64  (All rights reserved)
** This is freeware software (for non-commercial use)
 
Conversion of D:\333\001_1.jpg into D:\333\\001_5.jpg OK


Добавлено через 22 минуты
Вот как выглядит код.
Windows Batch file
1
2
@chcp 1251
@for /R D:\333\ %%A in (*.png *.jpg *.jpeg *.gif *.bmp) do "D:\111\NConvert\nconvert" -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "%%A"
0
6353 / 2778 / 1074
Регистрация: 06.06.2017
Сообщений: 9,428
02.03.2021, 16:42 5
Лучший ответ Сообщение было отмечено NikolayHAOS как решение

Решение

Цитата Сообщение от NikolayHAOS Посмотреть сообщение
Один хрен нумерует 001_1, 001_2.
В таком случае надо обрабатывать по маске, а не пофайлово.
Windows Batch file
1
@for /f "delims= eol=" %%d in ('dir/ad/b/s D:\333') do @for %%e in (png jpg jpeg gif bmp) do @D:\111\NConvert\nconvert.exe -quiet -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff "%%d\*.%%e"
Хотя, если учесть, что в результат пойдёт один тип, то логично сразу указывать все маски:
Windows Batch file
1
@for /f "delims= eol=" %%d in ('dir/ad/b/s D:\333') do @pushd "%%d"&@D:\111\NConvert\nconvert.exe -quiet -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff *.jpg *.jpeg *.png *.gif *.bmp
1
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
02.03.2021, 16:52  [ТС] 6
Добавил параметр -D, для удаления исходников и добавил формат *.jfif.
На данный момент код выглядит так и работает отлично.

Windows Batch file
1
@for /f "delims= eol=" %%d in ('dir/ad/b/s D:\SITE') do @pushd "%%d"&@D:\SOFT\NConvert\nconvert.exe -quiet -ratio -o $\### -out jpeg -rtype lanczos -resize longest 1024 -q 80 -opthuff -D *.jfif *.jpg *.jpeg *.png *.gif *.bmp
Благодарю от всей души.
0
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
26.03.2021, 08:52  [ТС] 7
Не понятно почему, но обрабатывает файлы которые меньше по размеру, хотя должен пропускать.
Что не так?
Из файла 384х320 сделал 1024х853.
0
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
27.03.2021, 11:33  [ТС] 8
Сам виноват. Недоглядел.
добавил "-rflag decr" все заработало так как надо.

Windows Batch file
1
@for /f "delims= eol=" %%d in ('dir/ad/b/s D:\SITE') do @pushd "%%d"&@D:\SOFT\NConvert\nconvert.exe -quiet -ratio -o $\### -out jpeg -rtype lanczos -rflag decr -resize longest 1024 -q 80 -opthuff -D *.jfif *.jpg *.jpeg *.png *.gif *.bmp
0
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
20.05.2021, 10:41  [ТС] 9
Всем доброго времени суток.
Ни как не могу понять как добавить в код параметр что бы к названию файла прибавлялась текущая дата.
Или это вообще не возможно сделать посредством nconvert и нужно повторно пройтись по каталогам чтобы переименовать файлы?
0
6353 / 2778 / 1074
Регистрация: 06.06.2017
Сообщений: 9,428
20.05.2021, 18:04 10
-o $\###_%date%.jpg
1
-3 / 2 / 0
Регистрация: 29.10.2013
Сообщений: 190
20.05.2021, 18:51  [ТС] 11
FlasherX, Благодарю.
0
20.05.2021, 18:51
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2021, 18:51
Помогаю со студенческими работами здесь

Привязка к имени файла размера и расположения его окна
Существует ли какая нибудь утилита для того, что бы винда запоминала расположение и размер окна с...

Пакетная обработка
Имеется файл ini.txt. Как правильно и грамотно его распарсить. Впервые делаю пакетную обработку. И...

Пакетная обработка
Ребят задумка такая....открываю файл docx, запускаю макрос. Он копирует в буфер картинки с листа,...

Пакетная обработка
Привет всем ! У меня созрел вопрос следующего характера: во время пакетной обработки в Fhotoshop,...

Динамическая смена имени ресурсного файла изображения
Добрый день уважаемые форумчане! небольшой кусок кода: int z1,q1; z1 =...

Пакетная обработка файлов
Нужно переводить большие группы файлов *.txt *.hmtl *.php и т.д. из кодировки ANSI в UTF-8 с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru