Страницы: 1
RSS
Создаем коллаж на основе матрицы
 
Господа. приветствую.
Помогите пожалуйста с реализацией вопроса.
Давно у меня был полностью рабочий вариант, но по стечению времени он канул в лету.
Суть вопроса программа составления коллажа.
Имеем папку с файлами *.jpg названия у файлов разнообразные (размеры картинок маленькие).
имеем картинку с пустотой (empty.jpg)
имеем программу которая генерирует 1 большую картинку из массы маленьких в той последовательности в которой зададим (написана на php, не моя, но подходит для реализации конечного продукта).
Для создания нужного вида коллажа делал раньше следующее.
В экселе создавал матрицу с нумерацией, например нам нужна буква "А", создаем матрицу 10х10 и размечаем цветами(желтый цвет) как должен строится коллаж. (Лист1)
Далее макрос формировал в выходной папке имена картинок таким образом, что если ячейка с числом без цвета, то создавался копировался файл empty.jpg с названием содержимого ячейки. Если же это цветная ячейка, то брал подряд картинки из папки с картинками и переименовывал их по содержимому ячейки.
В итоге мы получали список картинок с диапазоном в данном случае от 1 до 100
Для определения закрашенной ячейки в массиве, к содержимому ячейки добавлял #.
Код
Sub Num()
Dim i As Integer, rCell As Range
Dim str As String
For Each rCell In Sheets("Лист1").UsedRange
str = rCell.Value
If rCell.Interior.ColorIndex = 6 Then rCell.Value = str + "#"
Next
End Sub

Алгоритм то ясен.
1) получить список файлов из папки
2) создать массив чисел
3) скопировать файлы из входящей папки в исходящую
условие: если строка в массиве содержит # то брать файл из папки с файлами, а если нет то пустую.

Логика вроде правильная?
Заранее спасибо.
 
Немного покумекал
Код
Sub gen()
' create #
Call Num
' счетчик для нормальных картинок 
Dim Count As Integer
Count = 1
' счетчик для картинок вообще
Dim Count_loop As Integer
Count_loop = 1

Set fso_icon = CreateObject("Scripting.FileSystemObject")
For Each rCell In Sheets("Лист1").UsedRange
    If InStr(1, rCell.Value, "#") > 0 Then
        Count = Count + 1
' Sheets("File_name").Cells(Count, 3).Value содержит абсолютный путь к картинке
        fso_icon.CopyFile Sheets("File_name").Cells(Count, 3).Value, "c:\temp_png_out\" + Count_loop + ".png"
    Else
' тут получаю несоответствие типов
        fso_icon.CopyFile "c:\temp_png_empty\empty.png", "c:\temp_png_out\" + Count_loop + ".png"
        'Name "c:\temp_png_empty\empty.png" As "c:\temp_png_out\" + Count_loop + ".png"
    End If
    Count_loop = Count_loop + 1
Next
End Sub


тут получаю несоответствие типов, в чем причина, подскажите пожалуйста?
fso_icon.CopyFile "c:\temp_png_empty\empty.png", "c:\temp_png_out\" + Count_loop + ".png"
Изменено: Антон - 15.10.2013 14:30:06
 
понял ошибку, нельзя применять "+"
Изменено: Антон - 15.10.2013 15:32:07
Страницы: 1
Читают тему
Наверх