PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   automatsko rotiranje slika (https://forum.pcekspert.com/showthread.php?t=32740)

gremlin33 30.01.2006. 09:21

automatsko rotiranje slika
 
Nisam siguran dali ovo spada u ovu kategoriju...ali meni je svakako problem

naime imam nekih 300 foldera i u svakom po par tisuća slika, e sad sve su one okrenute za 90 stupnjeva ulijevo..i ja bi trebao pročešljat sve foldere i slike okrenut za 90 stupnjeva udesno i snimiti ih kao takve...
radio sam davno u VB 6.0 i hmm recimo znao bih sve napreaviti osim okrenut sliku...
da
li mi netko može pomoć vezano uz to (VB)
ili možda postoji kakav free software koji bi to mogao shendlat???

jedino što znam je da bih svaki dan trebao napraviti jedan takav rotate na istoj količini slika.

Andeo 30.01.2006. 10:04

Da, mislim da je ovo više pitanje za software nego programiranje jer bi bilo nepotrebno ići programirati kad rješenja već postoje. Mislim da Photoshop to može pogledaj na ovaj site

gremlin33 30.01.2006. 10:45

Andeo :)

PhotoShop može to napraviti ali ako mu točno odrediš koje slike želiš rotirati, čak i ACDSee ima mogućnost rotiranja svih slika unutar jednog foldera...ali tko će 200-300 puta klikat svaki dan na 300 foldera....:(
generalno ja bih bio JAKO zahvalan kad bi netko spomenuo kako bi se to moglo programski preko VB-a riješiti,,,naime za VB imam licencu pa bih izbjegao kupovanje softwera(dodatnog)...
no ne bih htio ispasti nezahvalan pa ću nešto slično postati i pod software...možda naiđe nešto free :)

hvala puno :)

Andeo 30.01.2006. 11:07

Aha, tako stvari stoje. :D Stvarno ne znam, znam da OpenGL relativno jednostavno snima u različite formate, te rotira, radi translaciju, skaliranje itd. Samo tu ti stvarno ne mogu pomoći jer sam u tome segmentu još pionir.:D Mislim da je najbolje i najednostavnije prvo potražiti gotovo rješenje. Ako ne nađeš probaj na tutorialima a daleko najbolji sajt za to je codeproject.com. Sretno i javi nam rezultat.

domy_os 30.01.2006. 11:10

Mislim da IrfanView ima tu mogućnost preko batch naredbi.

Andeo 30.01.2006. 11:16

Da ima.
Ovdje

Andeo 30.01.2006. 11:16

:fuming:
još kad bi radilo postanje linkova na ovome forumu...:rolleyes:

E.T. 30.01.2006. 14:14

Citiraj:

Originally posted by Andeo
:fuming:
još kad bi radilo postanje linkova na ovome forumu...:rolleyes:

tinyURL.com :beer:

gremlin33 30.01.2006. 14:51

hvala Vam na trudu,
ja sad malo cheprkam po tome pa ću Vam javiti rezultat..
a navečer ću se poigrati s VB-om pa ću i to javiti :)

gremlin33 31.01.2006. 16:33

Software nije zadovoljio moje potrebe tako da sam ostao ipak na VB, i na
PlanetSourceCode

naiđoh na nekakav programčić koji između milijun funkcija ima i rotate...
poanta je da to treba biti automatizirano što je moguće više tipa jedan click na gumb i da izrotira sve slikice (*.tif) iz svih direktorija i da ih snimi kao takve tamo gdi ih je našao

ja sam upotrijebio samo tu *.ocx controlu i trenutno se mučim sa onom rekurzivnom DIR funkcijom jer nemam pojma kolko me foldera zapravo očekuje...čim napravim cijeli kod ću postati ovdje :)

a ocx controla je gdpicture.ocx koja se nalazi na OCX

Bubba 31.01.2006. 17:15

Citiraj:

Originally posted by gremlin33
/snipja sam upotrijebio samo tu *.ocx controlu i trenutno se mučim sa onom rekurzivnom DIR funkcijom jer nemam pojma kolko me foldera zapravo očekuje...čim napravim cijeli kod ću postati ovdje :)
/snip

Tebe su zvali "komplicirani" kao mali?

Lijepo ti je netko ovdije rekao, IrfanView . Otvoris irfana, File-->Batch conversion/filename [B], upalis sve fileove koje trebas, dole sredis batch conversion settingse (Use advance options) i basta...

Kako to sve izgleda...

tor 31.01.2006. 19:12

Citiraj:

Originally posted by Bubba
[B]Tebe su zvali "komplicirani" kao mali?

Lijepo ti je netko ovdije rekao, IrfanView . Otvoris irfana, File-->Batch conversion/filename , upalis sve fileove koje trebas, dole sredis batch conversion settingse (Use advance options) i basta...

Kako to sve izgleda...

He, he dobra slika za "rotiranje":D

gremlin33 31.01.2006. 22:20

o ljudi moji...
imam jedan glavni folder pa u njemu n foldera pa u svakom od tih n još nekoliko nn podfoldera....i u svakom od njih se nalaze slike...
konkretno je jučer bilo 687 direktorija i 20000 slika
Također sve slike koje se rotiraju moraju ostati u folderima u kojima su i nađeni

pa zatim:
ja to neću sam raditi već treba jedan striček raditi kojem se tolko ruke tresu da ima na ekranu odjedamput 5 misheva.


i za kraj:
ako to napraviš s IrfanView-om ja ti platim pizzu i to nije puko obećanje :):):)

MRKONJA 31.01.2006. 23:15

LOL
Bubba ime foldera just 19:D :D
Perverznjak stari

Bubba 01.02.2006. 15:44

Citiraj:

Originally posted by gremlin33
o ljudi moji...
imam jedan glavni folder pa u njemu n foldera pa u svakom od tih n još nekoliko nn podfoldera....i u svakom od njih se nalaze slike...
konkretno je jučer bilo 687 direktorija i 20000 slika
Također sve slike koje se rotiraju moraju ostati u folderima u kojima su i nađeni

pa zatim:
ja to neću sam raditi već treba jedan striček raditi kojem se tolko ruke tresu da ima na ekranu odjedamput 5 misheva.

i za kraj:
ako to napraviš s IrfanView-om ja ti platim pizzu i to nije puko obećanje :):):)

Drzim te za rijec za pizzu (da ne bi ispalo, po ovim perverznjacima gore, da te drzim za picu, jel... :)). U svakom slucaju, prvi dio (rotacija i stavljanje u batch) je nesto sto Irfan i siromasna Windows CLI sintaksa mogu napraviti bez problema. U nacelu, ovo bi zadovoljilo sve tvoje prohtijeve:

Code:

dir ime_glavnog_direktorija /s /b > x:\path_direktorija\ime_datoteke.txt
To ce ti dati otprilike ovakav output (well, ne bas takav, barem sto se tice Andri, ali sto cu kad je forum tupav :():

C:\Documents and Settings\Bubba\Desktop\asian4you\andri04z01\andri04a001.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\andri04z01\andri04a002.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\andri04z01\andri04a003.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\andri04z01\andri04a080.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\andri04z01\andri04a081.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\andri04z01\andri04a082.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\gigie-HC\hard54a001.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\gigie-HC\hard54a002.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\gigie-HC\hard54a003.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\gigie-HC\hard54a077.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\gigie-HC\hard54a078.jpg
C:\Documents and Settings\Bubba\Desktop\asian4you\gigie-HC\hard54a079.jpg

Nako toga, ista meta, isto odstojanje, olitiga Ifran s ovakvim opcijama:

http://img469.imageshack.us/img469/7837/utfl17gn.gif

Primjeti kako je Irfan uredno posrkao sve pathove bas onako kako treba, po svim subfolderima.

Sada dolazi tezi dio, a to je svrstavanje natrag po direktorijima. AFAIK, to Irfan nema, ili barem ne radi na mojoj verziji, a to je da pospremi fileove od tamo gdje ih je i uzeo. To bi trebao izvesti s opcijom "Include subdirectories", no mozes se i konzultirati s Googletom u svezi outputa. S druge strane, pod uvijetom da postoji odredjeni string koji veze folder s datotekama (kao sto je recimo ovaj moj "andri04", recimo; ignoriraj onaj drugi primjer, krivo je imenovan folder), to se vrlo jednostavno moze rijesiti (recimo) Pearl skripticom u nekoliko redaka, pod uvijetom da imas odgovarajuci kompajler i malo skriptnog znanja...

Zond 01.02.2006. 16:31

Citiraj:

Originally posted by Bubba
Pearl skripticom u nekoliko redaka, pod uvijetom da imas odgovarajuci kompajler i malo skriptnog znanja...
Haha ... sweet revenge :smoke:

Necu ni komentirati one slike gore :p već cu se samo osvrnuti na "Pearl" jezik i "kompajler".

Bubimire , da nisi mislio na ovo?

>> http://snipurl.com/m4k6

Ili na ovo :P

>> http://snipurl.com/m4k8

Naravno ako mislimo na drugo :P onda jedino mozemo reci da se radi o interpreteru a ne kompajleru :P


Naravno sve cemo zavrsiti u revijalnom tonu :P

http://snipurl.com/m4kx

http://snipurl.com/m4k3

In your face ;) http://snipurl.com/m4l8

gremlin33 01.02.2006. 16:39

ne bježim od riječi ...pizzu si umalo dobio ako niš drugo barrem zbog truda ...:):)
perl neznam..a ni google a vala niti moja verzija Irfan-a ne podržava baš taj gorući problem vraćanja iste slike u isti folder...
i nažalost neima nikake poveznice između slike i foldera...
include all subfolders se nažalost odražava samo na input..a output je pak druga priča....
eto..tak ja i dalje drndam po vb-u :):)do ponedelka mora bit gotovo:(


akhmmm
izgleda da radi ovo s Irfan-om....:):)
sutra ću još malo pročačkat pa se javim

merci :)

Bubba 01.02.2006. 18:02

Citiraj:

Originally posted by Zond
Haha ... sweet revenge :smoke:

Necu ni komentirati one slike gore :p već cu se samo osvrnuti na "Pearl" jezik i "kompajler".

Bubimire , da nisi mislio na ovo?
/snip


Hehehe. You've been a very, very bad boy. Now you shall suffer consequences for your deeds. Ph33ar me!

gremlin33 06.02.2006. 11:10

kao što i rekoh onaj output u Irfan je svašta radio pa sam ja na kraju zmrljao nešto u VB-u i kao što obetjah evo koda....

Private oGdPicture As Gdpicture.cGdPicture
Private nPreviewHandle As Long
Private nNativeImageHandle As Long
Const strStaza As String = "D:\Rotate\"
Const strStaza_Input As String = "Rotate\"
Const strStaza_Drive As String = "D:\"
Public lngSec As Long, lng_Slikica As Long
Public p ' datoeka
Public intDirektorija As Integer, strFolder_trenutni As String, intPocetak As Integer
Public int_min As Integer, int_sat As Integer
Public intTip_rotacije As Integer, sk As Long

Private Sub cmdIzlaz_Click()
Unload Me
End Sub

Private Sub cmdUcitaj_Click()
If opt90(0) = True Then intTip_rotacije = 1
If opt90(1) = True Then intTip_rotacije = 3
zakljucaj
Timer.Enabled = True

lngSec = 0
int_min = 0
int_sat = 0

intDirektorija = Dir1.ListCount
For intPocetak = 0 To intDirektorija - 1
strFolder_trenutni = Dir1.List(intPocetak) & "\" '-1 je root folder
ucitaj_slike (strFolder_trenutni)
Next intPocetak
Timer.Enabled = False
lblVrijeme_Potrebno = Int(txtUkupnoSlika / sk)
otkljucaj
End Sub
Function zbroj_sve_slikice(strFolder_trenutni As String, intDirektorija As Integer)
Dim lngSlika As Long
For intPocetak = 0 To intDirektorija
strFolder_trenutni = Dir1.List(intPocetak) & "\" '-1 je root folder
p = Dir(strFolder_trenutni, vbNormal) ' čita 1 fajlu
Do While p <> "" ' kreće petlja
If p <> "." And p <> ".." Then '
If (GetAttr(strFolder_trenutni & p) And vbNormal) = vbNormal And Right(strFolder_trenutni & p, 3) = "tif" Then
lngSlika = lngSlika + 1
End If
Else
End If
p = Dir
Loop
Next intPocetak
zbroj_sve_slikice = lngSlika
Set p = Nothing
End Function

'lng_Slikica = 0
Function ucitaj_slike(strSto2 As String)
p = Dir(strSto2, vbNormal) ' čita 1 fajlu
Do While p <> "" ' kreće petlja
If p <> "." And p <> ".." Then '
If (GetAttr(strSto2 & p) And vbNormal) = vbNormal And Right(p, 3) = "tif" Then
Rotiraj_Sliku (strSto2 & p)
End If
End If
p = Dir
Loop
Set p = Nothing
End Function

Private Sub Dir1_Change()
txtUkupnoSlika = zbroj_sve_slikice(Dir1 & "\", Dir1.ListCount)
txtTray = Dir1.ListCount
End Sub

Private Sub drivee_Change()
Dir1.Path = drivee
End Sub

Private Sub Form_Load()
Dim tt As String
Timer.Enabled = False
Set oGdPicture = New Gdpicture.cGdPicture
Call oGdPicture.SetLicenceNumber("nnnnnnnnnnnnnn) 'licence key koji dobijete na njihovoj stranici
Call oGdViewer.SetLicenceNumber("nnnnnnnnnn") 'licence key koji dobijete na njihovoj stranici
oGdViewer.SetIsedQuickPDFLicenceNumber ("nnnnnnnnnnnnnnn") 'licence key koji dobijete na njihovoj stranici za pdf
nPreviewHandle = 0
nNativeImageHandle = 0
drivee = strStaza_Drive
tt = strStaza_Drive & strStaza_Input
Dir1.Path = tt

End Sub
Function Rotiraj_Sliku(strSto3 As String)
lng_Slikica = lng_Slikica + 1
DoEvents
txtStaza = strSto3
txtSlikica = lng_Slikica
oGdPicture.LoadFromFile (strSto3)
oGdPicture.Rotate (intTip_rotacije)
oGdPicture.SaveAsTiff strSto3, 4
oGdPicture.CloseNativeImage
End Function

Private Sub Timer_Timer()

lngSec = lngSec + 1
If lngSec = 60 Then
int_min = int_min + 1
lngSec = 0
End If
If int_min = 60 Then
int_sat = int_sat + 1
int_min = 0
End If
lblVrijeme = int_sat & " : " & int_min & " : " & lngSec
sk = sk + 1
End Sub
Function zakljucaj()
Dim intControla As Integer
lblkraj.Caption = " Rotiram Slike !!!"
For intControla = 0 To opt90.Count - 1
opt90(intControla).Enabled = False
Next intControla
cmdUcitaj.Enabled = False
drivee.Enabled = False
Dir1.Enabled = False
cmdIzlaz.Enabled = False
End Function

Function otkljucaj()
Dim intControla As Integer
For intControla = 0 To opt90.Count - 1
opt90(intControla).Enabled = True
Next intControla
cmdUcitaj.Enabled = True
drivee.Enabled = True
Dir1.Enabled = True
lblkraj.Caption = " Rotiranje Slika gotovo !!"
cmdIzlaz.Enabled = True
End Function

Na formi se nalazi:
oGdViewer
driveListBox=drivee
dirListBox=dir1
gumb : cmdUcitaj i cmdIzlaz
txtBox:
txtTray=kolko foldera
txtUkupnoSlika=ukupno slika
txtSlikica= trenutno obrađeno slikica
lblVrijeme=proteklo vrijeme
lblVrijeme_Potrebno=prosjek slika po sec
txtStaza= prikazuje full path i slikicu koju hendla
i timer

znam da nije sve optimizirano ali kolko se ja kužim i kak sam to navrat nanos delal..ja happy...a i svima hvala...
pizza stoji:)


Sva vremena su GMT +2. Sada je 20:26.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger