Работа с изображениями
Может кому-нибудь пригодится, тулза ооочень простая (делал для своего друга, которому было влом вручную объединять парные изображения в кол-во 200 штук)
Что делает тулза - ищет файл с маской "TC", если находит, то генерит имя тоже самое, только с масками "T" и "T1", после чего на этапе сохранения проверяет если файл с маской "T" и объединяет изображения в файле с маской "T1". Выглядит сложным, но это утилита была написана за 10 минут. (сначала думал использовать Bah.cairo) rem Аўтар:СяржукПятроўскі endrem SuperStrict Frameworkbrl.d3d7max2d Importbrl.blitz Importbrl.FileSystem Importbrl.stream Importbrl.linkedlist Importbrl.pixmap Importbrl.jpgloader Importbrl.basic Importbrl.retro rem Переменные endrem Globalt:String,appCommandLine:String[10] Globaldir:Int=ReadDir(CurrentDir()) IfNotdirRuntimeError"Failedtoreadcurrentdirectory" ForappCommandLine:String[0]=EachInAppArgs Next '============= rem Список изображений endrem GlobalTImagesList:TList=NewTList TypeTImages Fieldname:String FieldnameTC:String,nameT:String,nameT1:String ' Подготовка списка Methodprepare() IfRight:String(StripAll(Self.name),2)="TC" Self.nameTC=Self.name Self.nameT=Replace:String(Self.nameTC,"TC","T") Self.nameT1=Replace:String(Self.nameTC,"TC","T1") EndIf EndMethod ' Сохранение в формате JPEG, если в коммандной строке указано было качество 1-100, иначе с качеством 95 Methodsave(quality:Int=95) LocalqualityMethod:Int,imgWidth:Int,imgHeight:Int If(FileSize(Self.nameTC)>0)And(FileSize(Self.nameT)>0) qualityMethod=quality IfqualityMethod=0ThenqualityMethod=95 Localimg1:TPixmap=LoadPixmap(Self.nameTC) imgWidth=PixmapWidth(img1:TPixmap) imgHeight=PixmapHeight(img1:TPixmap) Localimg2:TPixmap=LoadPixmap(Self.nameT) LocalimgFinal:TPixmap=CreatePixmap(imgWidth,imgHeight*2,PF_RGB888) imgfinal.Paste(img1,0,0) imgfinal.Paste(img2,0,imgHeight) IfFileSize(Self.nameT1)=-1 SavePixmapJPeg(imgfinal,Self.nameT1,qualityMethod) EndIf img1=Null img2=Null imgFinal=Null EndIf EndMethod EndType '============= rem Подготовить список изображений endrem Functionprepare() ForLocalimg:TImages=EachInTImagesList img.prepare() Next EndFunction '============= rem Созранить рисунки endrem Functionsave(quality:Int) ForLocalimg:TImages=EachInTImagesList img.save(quality:Int) Next EndFunction '============= rem Основной цикл endrem Repeat Localimg:TImages=NewTImages TImagesList.AddLastimg img.name=NextFile(dir) Ifimg.name=""Exit Ifimg.name="."Orimg.name=".."Continue Forever CloseDirdir '============= prepare() save(Int(appCommandLine:String[0])) |
Часовой пояс GMT +4, время: 11:42. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot