这是编写后的脚本,感谢帮助过的人。
代码是在python 2中创建的,需要安装python 2才能运行。
你还需要imagemagick,这样软件才能完成关卡。
你可以更改文件夹,但它基本上需要从C:\ 360 \ images_folder \ project_name \ cubefotos * .jpg< - 每个具有此格式的文件的360张照片中获取6个cubefotos。
如果您的电脑无法运行代码,因为使用了ram和cpu,请尝试替换每个" subprocess.Popen"使用" subprocess.call" < - 没有引号
# -*- coding: utf-8 -*-
#Importing libraries
import os, sys
import glob
import subprocess
import shutil
from datetime import datetime, date, time, timedelta
from time import gmtime, strftime
#store and print starting time.
hi = datetime.now()
print " starting time: " + str(hi) + "\n"
project = 'name of your project'
print 'C:\\360\\testing\\'+project+'\\tiles'
try:
shutil.rmtree('C:\\360\\testing\\'+project+'\\tiles')
except:
os.makedirs('C:\\360\\testing\\'+project+'\\tiles')
#Creation of a list of every file in the directory
data = glob.glob('C:\\360\\images_folder\\'+project+'\\cubefotos\\*.jpg')
#Set the numbers of folders to be created
le = len(data)
llen = le // 6
#list of faces
innf = ['b', 'd', 'f', 'l', 'r', 'u']
#Start creating folders and subfolders
#First loop: "Global loop" creates root folder for the total "scene" necessary
for i in range(0, llen):
os.makedirs('C:\\360\\testing\\'+project+'\\tiles\\' + str(i))
#Second loop: creates levels for the scenes
for l in range(1, 4):
os.makedirs(os.path.join('C:\\360\\testing\\'+project+'\\tiles', str(i), str(l)))
#Thrid loop: creates faces subfolders
for e in innf:
os.makedirs(os.path.join('C:\\360\\testing\\'+project+'\\tiles', str(i), str(l), str(e)))
#Conditionals: Creates necessary subfolders for each level
#Level one condition
if l == 1:
os.makedirs(os.path.join('C:\\360\\testing\\'+project+'\\tiles', str(i), str(l), str(e), str(0)))
#Level two condition
elif l == 2:
for f in range(0, 2):
os.makedirs(os.path.join('C:\\360\\testing\\'+project+'\\tiles', str(i), str(l) ,str(e), str(f)))
#Level three condition
elif l == 3:
for d in range(0, 4):
os.makedirs(os.path.join('C:\\360\\testing\\'+project+'\\tiles', str(i), str(l), str(e), str(d)))
#Prints time it took to create folder structure
subprocess.Popen("echo Folders were created in: " + str(datetime.now() - hi), shell=True)
archivo = 0
temp=0
for i in range(0, llen):
print "······FOLDER······: " + str(i)
temp=i*6
#archivo=0
#Second loop: creates levels for the scenes
for l in range(1, 4):
subprocess.Popen("echo level " + str(l), shell=True)
#Create and organize images for level 1
for it in range(0, 6):
varin = data[i+it]
v2 = varin[0: 42]
archivo = it+temp
#print file
subprocess.Popen("echo file number: ", shell=True)
subprocess.Popen("echo face " + str(it), shell=True)
if int(it) == 0:
face ='f'
elif int(it) == 1:
face ='r'
elif int(it) == 2:
face ='b'
elif int(it) == 3:
face ='l'
elif int(it) == 4:
face ='u'
elif int(it) == 5:
face ='d'
#Normalized paths
#level 1
l1 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '1', face, '0', '0.jpg') )
#level 2
l20 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '2', face, '0', '0.jpg') )
l21 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '2', face, '0', '1.jpg') )
l22 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '2', face, '1', '0.jpg') )
l23 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '2', face, '1', '1.jpg') )
#level 3
l300 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '0', '0.jpg') )
l301 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '0', '1.jpg') )
l302 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '0', '2.jpg') )
l303 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '0', '3.jpg') )
l310 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '1', '0.jpg') )
l311 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '1', '1.jpg') )
l312 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '1', '2.jpg') )
l313 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '1', '3.jpg') )
l320 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '2', '0.jpg') )
l321 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '2', '1.jpg') )
l322 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '2', '2.jpg') )
l323 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '2', '3.jpg') )
l330 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '3', '0.jpg') )
l331 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '3', '1.jpg') )
l332 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '3', '2.jpg') )
l333 = os.path.normpath(os.path.join('C:\\360\\testing\\'+project+'\\tiles\\', str(i), '3', face, '3', '3.jpg') )
#check faces for their individual processing requirements
if it == 4:
#level 1
subprocess.Popen("convert " + data[archivo] + " -resize 25%% -rotate 180 " + str(l1) , shell=True)
#level2
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+0+0 " + str(l20) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+512+0 " + str(l21) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+0+512 " + str(l22) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+512+512 " + str(l23) , shell=True)
#level3
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+0 " + str(l300) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+0 " + str(l301) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+0 " + str(l302) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+0 " + str(l303) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+512 " + str(l310) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+512 " + str(l311) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+512 " + str(l312) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+512 " + str(l313) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+1024 " + str(l320) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+1024 " + str(l321) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+1024 " + str(l322) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+1024 " + str(l323) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+1536 " + str(l330) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+1536 " + str(l331) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+1536 " + str(l332) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+1536 " + str(l333) , shell=True)
if it == 5:
#level 1
subprocess.Popen("convert " + data[archivo] + " -resize 25%% -rotate 180 " + str(l1) , shell=True)
#level2
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+0+0 " + str(l20) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+512+0 " + str(l21) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+0+512 " + str(l22) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -rotate 180 -crop 512x512+512+512 " + str(l23) , shell=True)
#level3
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+0 " + str(l300) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+0 " + str(l301) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+0 " + str(l302) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+0 " + str(l303) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+512 " + str(l310) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+512 " + str(l311) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+512 " + str(l312) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+512 " + str(l313) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+1024 " + str(l320) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+1024 " + str(l321) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+1024 " + str(l322) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+1024 " + str(l323) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+0+1536 " + str(l330) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+512+1536 " + str(l331) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -rotate 180 -crop 512x512+1024+1536 " + str(l332) , shell=True)
subprocess.call("convert " + data[archivo] + " -rotate 180 -crop 512x512+1536+1536 " + str(l333) , shell=True)
#print time it takes to process each scene
subprocess.Popen("echo " + str(datetime.now() - hi), shell=True)
if it != 4 and it != 5:
#level 1
subprocess.Popen("convert " + data[archivo] + " -resize 25%% " + str(l1) , shell=True)
#level 2
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -crop 512x512+0+0 " + str(l20) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -crop 512x512+512+0 " + str(l21) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -crop 512x512+0+512 " + str(l22) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -resize 50%% -crop 512x512+512+512 " + str(l23) , shell=True)
#leve 3
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+0+0 " + str(l300) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+512+0 " + str(l301) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1024+0 " + str(l302) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1536+0 " + str(l303) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+0+512 " + str(l310) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+512+512 " + str(l311) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1024+512 " + str(l312) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1536+512 " + str(l313) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+0+1024 " + str(l320) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+512+1024 " + str(l321) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1024+1024 " + str(l322) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1536+1024 " + str(l323) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+0+1536 " + str(l330) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+512+1536 " + str(l331) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1024+1536 " + str(l332) , shell=True)
subprocess.Popen("convert " + data[archivo] + " -crop 512x512+1536+1536 " + str(l333) , shell=True)
#prints time it took the process to finish
print "\n"+ "process finished in: " +str(datetime.now() - hi)
答案 0 :(得分:0)
专注于您的要求:
子流程帮助页面:Python 3.6
在python 2.7中,你想打电话:
subprocess.Popen([application_path, arg1, arg2, ...])
如果您使用的是python 3,那么您应该使用run
而不是Popen
:
subprocess.run([application_path, arg1, arg2, ...])