Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Random generator voor JPG files

Pagina: 1
Acties:

  • Frenkie123
  • Registratie: December 2002
  • Laatst online: 28-05 22:27

Frenkie123

Lets Mod the World !

Topicstarter
Vraagje voor de experts;

Ik heb een lijst met een paar duizend fotos, met allemaal dezelfde naam en een oplopend nummer:

test0001.jpg
test0002.jpg
test0003.jpg
test0004.jpg
test0005.jpg
etc
etc

Die fotos gaan op een SD kaartje en die gaat in mijn dig. fotolijstje. Het probleem is dat er op het fotolijstje geen random funktie zit, dus ik wil die foto's van te voren flink door elkaar shufflellen voor ik ze op die SD kaart zet.

Ik heb al een keer geprobeerd ze op file size te shufflen en een keer op datum, maar de eerste geeft nauwelijks verschil ( beeld formaat ligt nu eenmaal vast ) en de tweede laat dan toch alle fotos van die ene dag bij elkaar zien.

Ben geen programmeur, maar ultra-n00b op dit gebied.

Wie kan me helpen ?

My cases; R2-D2, Wall-E, Hovermax, Rover, Stealth etc etc


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 20-11 13:45

Tukk

De α-man met het ẞ-brein

Bij irfanview heb je een batchconversie mogelijkheid. Ik heb even gekeken, jammer genoeg zit er geen random-knop in de lijst met plaatjes.

Wel heb je een sortering op file-size, dit zal toch wel een beetje random zijn, tenzij je een deel van de foto's in het donker hebt gemaakt ;) Die zullen dan achter elkaar komen.

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
filenaam = hash(filename) doen? :)

Dit riekt overigens naar een scriptrequest, die horen hier niet thuis ;)

[ Site ] [ twitch ] [ jijbuis ]


  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 01:07
Of natuurlijk gewoon filename = md5(rand(1,1111111111110000337)) doen is et nog veel randomer.
Kan je ff snel in php oid doen :)

There is no replacement for displacement!


  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
md5 van een random getal zal niet 'meer random' zijn dan de md5 van zijn huidige bestandsnaam - dat is het hele idee achter hash algoritmes ;)

[ Site ] [ twitch ] [ jijbuis ]


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

PHP:
1
2
3
4
5
$input = glob("./*.jpg");
foreach($input as $filename)
{
    move($filename, dirname($filename).'/'.md5($filename).'.jpg');
}


Zo ff uit mijn hoofd, ongetest en zonder garanties dat het niet je computer opblaast :P

Stop uploading passwords to Github!


  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

SchizoDuckie schreef op dinsdag 12 februari 2008 @ 11:21:
PHP:
1
2
3
4
5
$input = glob("./*.php");
foreach($input as $filename)
{
    move($filename, dirname($filename).'/'.md5($filename).'.jpg');
}


Zo ff uit mijn hoofd, ongetest en zonder garanties dat het niet je computer opblaast :P
Dat is mooi als je alle php bestanden als een .jpg wilt opslaan :P

http://xyproblem.info/


  • Johnny
  • Registratie: December 2001
  • Laatst online: 15:26

Johnny

ondergewaardeerde internetguru

Ik zou ze een naam geven zoals random_test0001.jpg zodat je later nog wel kan zien wat de originele naam was, wat in allerlei situaties weer handig kan zijn.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

DanielG schreef op dinsdag 12 februari 2008 @ 11:24:
[...]


Dat is mooi als je alle php bestanden als een .jpg wilt opslaan :P
Shht :P

Stop uploading passwords to Github!


Verwijderd

of de functie uniqid gebruiken? kan je in ieder geval een prefix meegeven...

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 18-11 22:35
iets als (uit m'n hoofd), in vb.net
code:
1
2
3
       For Each f As String In My.Computer.FileSystem.GetFiles("C:\dir\subdir")
            My.Computer.FileSystem.RenameFile(f, Int(Rnd() * 10000) & My.Computer.FileSystem.GetFileInfo(f).Extension)
        Next

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
Verwijderd schreef op dinsdag 12 februari 2008 @ 12:17:
of de functie uniqid gebruiken? kan je in ieder geval een prefix meegeven...
Dan staan ze nog steeds op volgorde en zul je ze nog steeds moeten hashen ;)

Bovendien schijnt'ie nogal sloom te zijn :)

[ Site ] [ twitch ] [ jijbuis ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-11 23:43

.oisyn

Moderator Devschuur®

Demotivational Speaker

shuffle(). Waarom zo moeilijk doen met hashes e.d.?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Cartman!
  • Registratie: April 2000
  • Niet online
Daar heeft ie toch niks aan? Hij wil niet een array shuffelen maar de files in een directory. De beste methode is denk ik hash_originele-naam.jpg want dan kun je evt. altijd nog terug naar het origineel.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Tuurlijk wel; bestandsnamen inlezen, shuffelen en dan door de array lopen en de originele bestandsnaam (uit de geshuffelde array) renamen naar x; waarbij je x bij iedere iteratie (bijv.) ophoogt.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Herby
  • Registratie: Januari 2004
  • Laatst online: 17-01-2022

Herby

Stalknecht

Waarom niet gewoon een batch script maken en dan %RANDOM% gerbruiken ? (zie set onder cmd).

Compromis? Hoezo heb ik het mis dan?! | Geluk = gelul met een K | з=(•̪●)=ε


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-11 23:43

.oisyn

Moderator Devschuur®

Demotivational Speaker

Cartman! schreef op dinsdag 12 februari 2008 @ 13:54:
Daar heeft ie toch niks aan? Hij wil niet een array shuffelen maar de files in een directory.
Files in een directory zijn geen array wil je zeggen?

PHP:
1
2
3
4
5
$files = glob("./*.jpg");  // hey kijk nou, een array 8)7
shuffle($files);
$i = 0;
foreach($files as $file)
    move($file, sprintf("%s/%05d.jpg", dirname($file), $i++));


Gegarandeerd geen collisions (daar moet je met hashes nog op testen), en een echte (pseudo)willekeurige volgorde (de hashes lijken willekeurig, maar een andere lijst met gelijke bestandsnamen geeft eenzelfde volgorde)

[ Voor 22% gewijzigd door .oisyn op 12-02-2008 14:27 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Cartman!
  • Registratie: April 2000
  • Niet online
Op die manier wel een array ja maar ik had niet begrepen dat je het ging shuffelen en daarna weer opslaan onder een nieuwe filename. Ik weet alleen niet voor de TS of het wenselijk is de originele naam weer te kunnen terughalen (lijkt me zomaar mogelijk).

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
.oisyn schreef op dinsdag 12 februari 2008 @ 12:36:
shuffle(). Waarom zo moeilijk doen met hashes e.d.?
Omdat helemaal niet duidelijk was dat de TS PHP wil gebruiken hiervoor? ;)

Verder natuurlijk ook wel een prima oplossing, enig nadeel is dat als je -echt- veel bestanden hebt en de operatie duurt even het problemen gaat opleveren als er bestanden verwijdert worden. Dat en het is nogal verwarrend als eenzelfde fotonaam ineens naar een andere foto verwijst :+

[ Site ] [ twitch ] [ jijbuis ]


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 00:46
Allemaal mogelijkheden hoor, maar volgens mij heb je binnen 1 min op google een tooltje gevonden die hetzelfde doet.

Ik zocht naar 'random file renamer' en kreeg tig dingen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-11 23:43

.oisyn

Moderator Devschuur®

Demotivational Speaker

FragFrog schreef op dinsdag 12 februari 2008 @ 14:39:
[...]

Omdat helemaal niet duidelijk was dat de TS PHP wil gebruiken hiervoor? ;)
:D. Je hebt gelijk. Ik zag PHP code en toen nam ik aan dat het een PHP topic was :). Maar goed, mijn punt blijft natuurlijk. Een hash generator is geen random number generator. Als je een willekeurig volgorde wilt dan moet je een willekeurige volgorde maken mbv een random number generator. Een hash is niet willekeurig :)

[ Voor 30% gewijzigd door .oisyn op 12-02-2008 14:56 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

[/laat]

[ Voor 96% gewijzigd door SchizoDuckie op 12-02-2008 15:00 ]

Stop uploading passwords to Github!


  • MaNDaRK
  • Registratie: Oktober 2001
  • Laatst online: 20:12
Ik denk dat het zo iets moet worden ;)

Batchfile:
1
2
3
dir *.jpg /b > files.tmp
for /f %i in (files.tmp) do (ren %i "%random% %i")
del files.tmp


Ongetest ;)

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Bij de FOR in een Batch wordt de %random% niet opnieuw gegenereerd.

code:
1
2
3
4
5
6
7
8
9
10
11
12
FOR /L %%i IN (1,1,9) DO echo %%i %RANDOM%

output:
1 2932
2 2932
3 2932
4 2932
5 2932
6 2932
7 2932
8 2932
9 2932


dus alle bestanden krijgen dezelfde random voorloper.

Ik heb het nu in 2 batch bestanden:
code:
1
ren %1 %RANDOM%%1
en
code:
1
FOR /F %%i in ('dir *.jpg /b') do (r.bat %%i)


wat als output heeft:
T:\>dir *.jpg /b
test0001.jpg
test0002.jpg
test0003.jpg
test0004.jpg

T:\>random.bat

T:\>dir *.jpg /b
1527test0003.jpg
1619test0002.jpg
18326test0004.jpg
26138test0001.jpg


Of als je alleen de nummers anders wilt:

code:
1
ren %1 test%RANDOM%.jpg

T:\>dir *.jpg /b
test18590.jpg
test22406.jpg
test25993.jpg
test26677.jpg

[ Voor 37% gewijzigd door DanielG op 13-02-2008 13:00 . Reden: Output voorbeelden erbij ]

http://xyproblem.info/


  • MaNDaRK
  • Registratie: Oktober 2001
  • Laatst online: 20:12
Thanks DanielG, weer wat geleerd!

Ik gebruik %random% eigenlijk nooit in mijn batch bestanden, de FOR lus wel :)
Pagina: 1