Войти

Показать полную графическую версию : скрипт рекурсивного изменения размера изображений


Страниц : [1] 2

batyaPS
18-01-2015, 01:52
имеем папку с папками(тысячи) в которых лежат 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
и глубина цвета должна быть 4 а получились 24

Iska
18-01-2015, 02:27
batyaPS, не очень понятно с некоторыми деталями. В частности непонятно, где ширина, а где высота в:
800*1100 »
а также про глубину в:
глубина цвета должна быть 4 »

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

batyaPS
18-01-2015, 12:32
не очень понятно с некоторыми деталями. В частности непонятно, где ширина, а где высота в: »
800 ширина, это обычные a4
выложил https://yadi.sk/d/9Lo45cmUe4YGM

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

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

Foreigner
18-01-2015, 13:32
batyaPS, Я бы попробовал nconvert (http://www.xnview.com/en/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
Foreigner, спасибо конечно за наводку, но боюсь я сам не докумекую как реализовать

batyaPS
18-01-2015, 16:53
хотя что бы особо не усложнять скрипт можно все файлы рекурсивно перегнать в 800*1100 в черно-белое

Foreigner
18-01-2015, 17:27
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
batyaPS, А так не пойдёт? Семь бесплатных программ для пакетной обработки графических файлов (http://3domen.com/index.php?newsid=7103)

batyaPS
19-01-2015, 00:46
yurfed, они с рекурсией не работают

batyaPS
19-01-2015, 09:59
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
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
в описании нашел ключ -page которым можно выбирать какую страницу в тифе отредактировать, но не как не найду как применить к всем страницам файла, т.е. что то типа -page all или -page * такие варианты не работают, понял только то что нумерация в софтине с 0 а не как в файле с 1

yurfed
19-01-2015, 11:53
они с рекурсией не работают »Объясните что по вашему рекурсия и для чего она вам необходима.

batyaPS
19-01-2015, 11:55
Объясните что по вашему рекурсия и для чего она вам необходима. »
есть папка, в данной папке ещё папки(много) в этих папках фотки
требуется не выбирая каждую папку или файлы произвести конвертирование всех файлов

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

yurfed
19-01-2015, 12:22
требуется не выбирая каждую папку или файлы произвести конвертирование всех файлов »PIXResizer сохраняет структуру каталогов, включая и вложенные. Чем вас не устраивает? Программа Free
При работе с вложенными папками стоит иметь в виду, что если не установлен флажок Copy Directory Structure, все изображения будут сбрасываться в одну директорию.

batyaPS
19-01-2015, 13:15
PIXResizer »
она даже не видит фотки внутри папок, только выбор непосредственно
в настройках нет возможности задать разрешение, только процентное соотношение
формат файла не соблюдает, т.е. было tif а создала tiff

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

batyaPS
19-01-2015, 14:19
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
скрипт справляется с 29000 файлов быстрее.




© OSzone.net 2001-2012