С нами с 04.07.04
Сообщения: 590
Рейтинг: 455
|
Добавлено: 25/11/11 в 22:05 |
Посоветуйте чем можно такое сделать?
Имеется папка в которой лежит определенное количество картинок, надо эти картинки объединить по 4 штуки, чтоб на выходе была одна картинка состоящая из 4-х, примерно вот так
Задача именно чтоб можно было это сделать пакетно, т.е. закинул папку с пиксами и на выходе получил нужный результат.
спасибо
|
|
|
|
1К13!
С нами с 07.05.04
Сообщения: 7721
Рейтинг: 2428
|
Добавлено: 25/11/11 в 23:15 |
можно сделать средствами экшенов в фотошопе.
примерно как это можно сделать:
пихаешь четыре картинки в папку /src/. назваешь их 1.jpg, 2.jpg и т.д.
начинаешь запись экшена, делаешь с картинками всё что нужно, сохраняешь готовую общую картинку в папку /final/final.jpg. заканчиваешь запись экшена.
помещаешь в /src/ новые 1.jpg, 2.jpg, 3.jpg и 4.jpg, и жмешь на выполнение экшена. в итоге в папке /final/ появляется искомая картинка уже на автомате.
если нужно обработать не 4 картинки в одну, а 40 в десять - то придётся делать десять папок, в каждой по 4 исходных джпега и при записи экшена, соответственно, тоже делать 10 итераций одних и тех же действий (только папки исходников и папку для итогового файла менять).
только нужно, чтобы все картинки были одинакового размера, либо под маску их ложить, чтоб краёв видно не было.
|
|
|
|
С нами с 04.07.04
Сообщения: 590
Рейтинг: 455
|
Добавлено: 26/11/11 в 00:07 |
benzole: спасибо, про фотошоп и экшен я знаю, но это не то. Один человек мне сказал что делал такое, но вот не помнит каким софтом
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 26/11/11 в 11:30 |
Код: [развернуть] | param (
[parameter( Mandatory = $true )][String]$src,
[parameter( Mandatory = $true )][String]$dst,
[String]$bg = 'white'
)
if( [IO.Directory]::Exists( $src ) ) {
[void][Reflection.Assembly]::LoadWithPartialName( 'System.Drawing' )
if( -not [IO.Directory]::Exists( $dst ) ) {
[Void][IO.Directory]::CreateDirectory( $dst )
}
$f = ls -Path ( [IO.Path]::Combine( $src, '*' ) ) -Include ( '*.jpg', '*.png' )
$lf = $f.Length
for( $i = 0; $i -lt $lf; $i += 4 ) {
$f4 = @(); $w = $h = 0; $lj = 4
if( $lf - $i -lt 4 ) { $lj = $lf - $i }
for( $j = 0; $j -lt $lj; $j += 1 ) {
$f4 += ( , ( New-Object Drawing.Bitmap $f[ $i + $j ].FullName ) )
if( $f4[ $j ].Width -gt $w ) { $w = $f4[ $j ].Width }
if( $f4[ $j ].Height -gt $h ) { $h = $f4[ $j ].Height }
}
$n = [IO.Path]::Combine( $dst, [string]( $i / 4 + 1 ) + '.jpg' )
if( -not [IO.File]::Exists( $n ) ){
$b = New-Object Drawing.Bitmap ( 2 * $w ), ( 2 * $h )
$g = [Drawing.Graphics]::FromImage( $b )
$g.Clear( [Drawing.Color]::$bg )
$k = -1;
for( $j = 0; $j -lt $lj; $j +=1 ) {
if( $j % 2 -eq 0 ) { $k += 1 }
$g.DrawImage( $f4[ $j ], $w * ( ( $j % 2 ) + .5 ) - $f4[ $j ].Width / 2, $h * ( $k + .5 ) - $f4[ $j ].Height / 2, $f4[ $j ].Width, $f4[ $j ].Height )
$f4[ $j ].Dispose()
}
$b.Save( $n, ( [Drawing.Imaging.ImageFormat]::Jpeg ) )
$b.Dispose()
}
}
} |
Сохранить в файл softinka.ps1
win+r
powershell -file c:/softinka.ps1 e:/src d:/dst BackgroundColorName
Если в путях есть пробелы, то "в кавычках".
BackgroundColorName можно не указывать, по-умолчанию белый.
Если папки d:/dst нет, то она будет создана.
Создаваемые файлы именуются по порядку номеров: 1, 2, ...
Формат .jpg
Размеры ячейки определяются максимальными размерами в каждой четвёрке.
Размер итоговой картинки равен 2 * размер ячейки.
Картинки в ячейках центрируются по горизонтали и вертикали.
Кроп/ресайз, сортировка/группировка, накладывание текста и прочее можно легко прикрутить, но уже на коммерческой основе.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |