Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   скрипт рекурсивного изменения размера изображений (http://forum.oszone.net/showthread.php?t=294079)

batyaPS 18-01-2015 01:52 2457679

скрипт рекурсивного изменения размера изображений
 
имеем папку с папками(тысячи) в которых лежат tifы
данные тифы получены путём сканирования с определенными параметрами
Скрытый текст

<ImagePath Path="\\10.xx.xx.xx\scan\" ViewingPath="C:\Program Files\IrfanView\i_view32.exe" FileExt="tif" ScanParams="/scan /dpi=(300,300) /convert=%2:S" ConvertToSave="%1:S /resize_short=800 /resample /aspectratio /dpi=(300,300) /bpp=4 /jpgq=40 /tifc=7 /convert=%2:S" ConvertToTIF="1:S /convert=%2:S" AppendToTIF="%1:S /append=%2:S /silent /killmesoftly"/>

через IrfanView, обычно они имеют размер 800*1100(может варьироваться +- т.е. 1098 1200) и физический размер 150-400 кб
но где то произошла ошибка и размеры тифов получились 2552*3508 и физически на 25 м каждый

помогите скриптом который пройдется по всем вложенным папкам (их по идее одна рекурсия) и скорректирует размер тифов до 800*(соотношение стороны)

batyaPS 18-01-2015 02:23 2457685

и глубина цвета должна быть 4 а получились 24

Iska 18-01-2015 02:27 2457688

batyaPS, не очень понятно с некоторыми деталями. В частности непонятно, где ширина, а где высота в:
Цитата:

Цитата batyaPS
800*1100 »

а также про глубину в:
Цитата:

Цитата batyaPS
глубина цвета должна быть 4 »

Вы не могли бы выложить образец результата некорректного сканирования и образец того, что нужно получить? Полагаю, на примерах станет понятнее.

batyaPS 18-01-2015 12:32 2457797

Цитата:

Цитата Iska
не очень понятно с некоторыми деталями. В частности непонятно, где ширина, а где высота в: »

800 ширина, это обычные a4
выложил https://yadi.sk/d/9Lo45cmUe4YGM

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

batyaPS 18-01-2015 13:01 2457812

есть нюанс, некоторые тифы многостраничные (я там на яндексе прикрепил файл на 37 метров) это нормально, у них разрешение 800*1100
их по идее трогать не нужно.

Foreigner 18-01-2015 13:32 2457828

batyaPS, Я бы попробовал nconvert
Код:

@echo off

for /d /r "C:\Foto" %%i in (*) do nconvert ... "%%i\*.tif"

Как установить глубину цвета не нашел, возможные опции для ресайзинга:
Код:

nconvert -ratio -resize 800 -overwrite ...
nconvert -resize 800 1100 -overwrite ...
nconvert -ratio -resize 1100 1100 -overwrite ...

Справку можно посмотреть так:
Код:

nconvert -help | more
nconvert -help > help.txt


batyaPS 18-01-2015 16:17 2457917

Foreigner, спасибо конечно за наводку, но боюсь я сам не докумекую как реализовать

batyaPS 18-01-2015 16:53 2457932

хотя что бы особо не усложнять скрипт можно все файлы рекурсивно перегнать в 800*1100 в черно-белое

Foreigner 18-01-2015 17:27 2457936

batyaPS, Ну так попробуйте разные варианты nconvert (приведены выше)
Код:

@echo off

for /d /r "C:\Foto" %%i in (*) do nconvert -resize 800 1100 -overwrite "%%i\*.tif"

Обязательно создайте тестовую папку, поместите туда образцы файлов, пропишите вместо "C:\Foto" ее реальное название, запустите и проверьте результат.

yurfed 18-01-2015 17:38 2457938

batyaPS, А так не пойдёт? Семь бесплатных программ для пакетной обработки графических файлов

batyaPS 19-01-2015 00:46 2458151

yurfed, они с рекурсией не работают

batyaPS 19-01-2015 09:59 2458232

Цитата:

Цитата Foreigner
batyaPS, Ну так попробуйте разные варианты nconvert (приведены выше)
Код: Выделить весь код
@echo off
for /d /r "C:\Foto" %%i in (*) do nconvert -resize 800 1100 -overwrite "%%i\*.tif"
Обязательно создайте тестовую папку, поместите туда образцы файлов, пропишите вместо "C:\Foto" ее реальное название, запустите и проверьте результат. »

скрипт работает, как в него дописать параметр
$.iColors - кол-во цветов (256, 216, 128, 64, 32, 16 или 8) ?

единственное конечно он оставляет из многостраничного тифа только первую страницу
это реально побороть ? хотя бы что бы пропускал

Foreigner 19-01-2015 10:54 2458250

batyaPS,
Добавь -colors 4:
Код:

@echo off
for /d /r "C:\Foto" %%i in (*) do nconvert -colors 4 -resize 800 1100 -overwrite "%%i\*.tif"

Получится 4-х битный tiff

batyaPS 19-01-2015 11:22 2458267

в описании нашел ключ -page которым можно выбирать какую страницу в тифе отредактировать, но не как не найду как применить к всем страницам файла, т.е. что то типа -page all или -page * такие варианты не работают, понял только то что нумерация в софтине с 0 а не как в файле с 1

yurfed 19-01-2015 11:53 2458271

Цитата:

Цитата batyaPS
они с рекурсией не работают »

Объясните что по вашему рекурсия и для чего она вам необходима.

batyaPS 19-01-2015 11:55 2458272

Цитата:

Цитата yurfed
Объясните что по вашему рекурсия и для чего она вам необходима. »

есть папка, в данной папке ещё папки(много) в этих папках фотки
требуется не выбирая каждую папку или файлы произвести конвертирование всех файлов

http://soft.oszone.net/program/16197...d_TIFF_Editor/
справиться с задачей в триальном режиме(кстати какие ограничения ? водяной знак не накладывает)?

yurfed 19-01-2015 12:22 2458282

Цитата:

Цитата batyaPS
требуется не выбирая каждую папку или файлы произвести конвертирование всех файлов »

PIXResizer сохраняет структуру каталогов, включая и вложенные. Чем вас не устраивает? Программа Free
Цитата:

При работе с вложенными папками стоит иметь в виду, что если не установлен флажок Copy Directory Structure, все изображения будут сбрасываться в одну директорию.

batyaPS 19-01-2015 13:15 2458316

Цитата:

Цитата yurfed
PIXResizer »

она даже не видит фотки внутри папок, только выбор непосредственно
в настройках нет возможности задать разрешение, только процентное соотношение
формат файла не соблюдает, т.е. было tif а создала tiff

Advanced TIFF Editor 3.7.6.24 c многостраничными справляется, но при групповой обработке нет возможности выставить разрешение.

batyaPS 19-01-2015 14:19 2458350

FSResizer33 отлично отработала
единственное что в ней не хватает, это перевод изображения в оттенки серого.

скрипт
Код:

for /d /r "Z:\1" %%i in (*) do nconvert -grey 16 -colors 4 -resize 800 1100 -overwrite "%%i\*.tif"
тоже отлично работает, но ломает многостраничные тифы, что печально, если бы не ломал, было круче чем FSResizer33

batyaPS 19-01-2015 14:34 2458354

скрипт справляется с 29000 файлов быстрее.

sov44 23-01-2015 10:53 2460092

Подскажите с написанием скрипта.
Нужно запустить батник рядом с папками с графическими файлами (например jpg) разного размера, чтобы на выходе получились новые папки с файлами jpg пропорционально уменьшенными до 1 мб.
Или как вариант, скрипт vbs, на который можно перетаскивать папки с файлами для их обработки.

п.с. с ключами nconvert не разобрался.

Foreigner 23-01-2015 13:32 2460154

sov44, Уменьшить размер файла можно без ресайза. Как уменьшить размеры изображения с привязкой к размеру файла не нашел:
Код:

nconvert -max_filesize 1048576 file.jpg

sov44 23-01-2015 13:48 2460159

Foreigner, всё равно размер становится больше 1 мб. :(
Проблема в том, что нужно по интернету на сервер заливать файлы размером не более 1 Мб. Приходится править ручками размер ( я использую FastStone Image Viewer), что довольно утомительно.
Цитата:

Цитата Foreigner
Как уменьшить размеры изображения с привязкой к размеру файла не нашел »

с пропорцией уменьшения вроде разобрался
Код:

:: изменить пропорционально по ширине, 1000
nconvert -resize shortest 1000 file.jpg


Elven 23-01-2015 14:06 2460164

тогда вероятно проблема в сервере который хочет видеть именно мегабайт, а не мебибайт. В уже указанной Foreigner строке исправь 1048576 на 1000000


Время: 16:05.

Время: 16:05.
© OSzone.net 2001-