Rename εικονάς σε FTP

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 24 Μάιος 2012 21:06

Καλησπερα, εχω μια IP CAMERA και στελνει image frames καθε 1 λεπτο σε FTP αλλα το προβλημα ειναι οτι η εικονες καθε φορα εχουν διαφορετικο ονομα.
Πως μπορω με ενα scriptακι να γινετε rename της εικονας απο πχ 0000003920.jpg σε img-st.jpg αλλα ξαναλεω οτι εικονες εχουν διαφορετικο ονομα πχ 0000003920.jpg, 0000003921.jpg, 0000003922.jpg

Άβαταρ μέλους
ideal
Δημοσιεύσεις: 302
Εγγραφή: 12 Φεβ 2011 16:26

Rename εικονάς σε FTP

Δημοσίευση από ideal » 25 Μάιος 2012 12:24

Χρησιμοποιεις τη rename της php
<?php
rename('0000003920.jpg', 'img-st001.jpg') or die('Error renaming file.');
?>
μπορεις φυσικα να το βαλεις σε ενα βροχο επαναλιψης και να μετονομασεις ολες σου τις εικονες. Και αν θες προσθετεις κι ενα cron job για να μη χρειαζεται να το κανεις manual.
Δεν μπορούμε να λύσουμε τα προβλήματά μας χρησιμοποιώντας τον ίδιο τρόπο σκέψης που χρησιμοποιήσαμε όταν τα δημιουργήσαμε. -Α. Einstein

Rent a Car

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Rename εικονάς σε FTP

Δημοσίευση από jpk » 25 Μάιος 2012 14:13

Μια άλλη προσέγγιση είναι εκεί που είναι να χρησιμοποιήσεις την εικόνα να κάνεις ένα glob να τις παίρνεις όλες και να χρησιμοποιείς την πιο πρόσφατη (αν είναι τόσο απλό όσο increment το βρίσκεις αμέσως αλλιώς filemtime) και φυσικά να σβήνεις τις παλιότερες. Μαζί με αυτό δεν θα ήταν κακό να τρέχεις κάνα job (Cron στην περίπτωσή μας) κάθε τόσο μην κάνει επισκέπτης να μπει για μεγάλο χρονικό διάστημα και γεμίσει ο server σου με φωτογραφίες.

deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 26 Μάιος 2012 12:30

Φιλε jpk δεν σε καταλαβα :-? δηλαδη να κανω cron jop καλυτερα? το προβλημα ειναι οτι γεμιζει με εικονες ο server, και για τον λογο αυτο θελω ολες εικονες να ειναι σε μια μονο εικονα με το ονομα img-de.jpg με το cron jop δεν νομιζο οτι θα καταφερω κατι κανοντας rename μια μια μονο εικονα. Καθε λεπτο ανεβαινει και μια εικονα με διαφορετικο ονομα. :roll:

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Rename εικονάς σε FTP

Δημοσίευση από alou » 26 Μάιος 2012 20:08

nikandcan έγραψε:Φιλε jpk δεν σε καταλαβα :-? δηλαδη να κανω cron jop καλυτερα? το προβλημα ειναι οτι γεμιζει με εικονες ο server, και για τον λογο αυτο θελω ολες εικονες να ειναι σε μια μονο εικονα με το ονομα img-de.jpg με το cron jop δεν νομιζο οτι θα καταφερω κατι κανοντας rename μια μια μονο εικονα. Καθε λεπτο ανεβαινει και μια εικονα με διαφορετικο ονομα. :roll:
Όλες οι εικόνες σε μία ή να κρατάς και να κάνεις rename την πιο πρόσφατη;

Ο jpk εννοεί φαντάζομαι κάτι τέτοιο:

Κώδικας: Επιλογή όλων

    $allimages = glob&#40;'to-folder-pou-anevenoun/*.jpg', GLOB_EXPAND_BRACE&#41;;
    array_multisort&#40;array_map&#40;'filemtime', $images&#41;, SORT_DESC, $images&#41;;
δλδ παίρνεις όλες τις εικόνες του dir και τις σορτάρεις ως προς το filemtime που είπε ο jdk.

Μετά η εικόνα που σε ενδιαφέρει είναι η τελευταία του array allimages

Κώδικας: Επιλογή όλων

    $imageToKeep = end&#40;$allimages&#41;;

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Rename εικονάς σε FTP

Δημοσίευση από jpk » 26 Μάιος 2012 20:37

Σωστός alou , αυτό εννοώ (φυσικά υπάρχουν και πολλοί άλλοι τρόποι). Αυτός ο κώδικας θα μπορούσε να είναι εκεί που χρησιμοποιείτε η εικόνα.

Π.χ. θα μπορούσε το http://www.example.com/last.jpg να είναι PHP που παίρνει με τον προαναφερθέν τρόπο την πιο πρόσφατη εικόνα με header ότι είναι jpg και με readfile να την διαβάζει και να την εξάγει. Φυσικά αφού κάνει αυτό μπορεί να διαγράφει τις προηγούμενες (τις έχεις ήδη στο array). Αν δεν ξέρεις αν είναι jpg ή κάτι άλλο απλά φτιάχνεις ένα associative array για το Content-type στο header.

Αυτό μπορείς να το κάνεις σε συνδυασμό με κάποιο job , γιατί αν κάνει να χρησιμοποιηθεί η εικόνα για καμιά μέρα για παράδειγμα τότε θα έχεις γεμίσει με φωτογραφίες στον server. Το τελευταίο είναι σχετικό με το πόσες επισκέψεις έχεις στην εικόνα.

deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 27 Μάιος 2012 20:28

Δεν καταλαβα πως θα γινει το rename, και εχω της παρακατω αποριες γιατι ειμαι λιγο ασχετος με τετοιου ειδους προγραμματισμο.

Το php script το βαζω στο root dir των εικονων που θα ανεβαινουν?
Πως το php θα κανει μετονομασια των εικονων?
Η λειτουργια του php ειναι να διαγράφει της εικονες που εχουν προβληθει ή της διαγραφει ολες μια μετα την αλλη με χρονικη καθυστερηση?

Αν γινετε θα μπορουσατε να μου φτιαξετε ενα demo για να καταλαβω η αν υπαρχει καπιο tut, γιατι δεν εχω βρει κατι.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Rename εικονάς σε FTP

Δημοσίευση από jpk » 28 Μάιος 2012 00:50

Όπως είπα υπάρχουν πολλοί τρόποι εκτός από αυτόν.
Ο κώδικας που σου δίνω δεν είναι αυτός που χρησιμοποιώ, αλλά για να μην περιπλέξω τα πράγματα με OOP και MVC το απλοποιώ όσο γίνεται χρησιμοποιώντας και κώδικα του alou.

Ας υποθέσουμε ότι οι εικόνες ανεβαίνουν σε κατάλογο Image/Live που είναι κάτω από το public_html (θα μπορούσε να είναι οπουδήποτε απλά άλλαξε το που παίρνει το glob , και που σβήνει στο unlink)

Στον ίδιο κατάλογο έχουμε ένα .htaccess (και rewrite module στον apache)

Κώδικας: Επιλογή όλων

DirectoryIndex listener.php
RewriteEngine On
RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteCond %&#123;REQUEST_FILENAME&#125; !-l
RewriteRule .* listener.php &#91;QSA,L&#93;
Σε αυτή την απλή μορφή ότι δεν βρίσκει το στέλνει στο listener.php

Κώδικας: Επιλογή όλων

<?php
    // Βρίσκουμε όλες τις εικόνες στον ίδιο κατάλογο που είναι jpg
    $images = glob&#40;"*.jpg"&#41;;
    
    // Βλ. alou . Κάνουμε ταξινόμηση στις εικόνες με βάση το χρόνο δημιουργίας τους 
    // &#40;απο το πιο πρόσφατο στο παλιότερο&#41; 
    array_multisort&#40;array_map&#40;'filemtime', $images&#41;, SORT_DESC, $images&#41;; 
    
    // Αν έχουμε πάνω απο μια εικόνα πρέπει να σβήσουμε τις παλιότερες 
    if&#40;count&#40;$images&#41;>1&#41;
    &#123;
       for&#40;$i=1; $i < count&#40;$images&#41;; $i++&#41;
       &#123;
         unlink&#40;$images&#91;$i&#93;&#41;;
       &#125;
    &#125;
    
    
    // Εμφανίζουμε την πιο πρόσφατη εικόνα 
    if&#40;count&#40;$images&#41;>0&#41;
    &#123;
      header&#40;"Content-Type&#58; image/jpeg"&#41;;
      readfile&#40;$images&#91;0&#93;&#41;;
    &#125;
?>
Τώρα μπορείς να δεις την πιο πρόσφατη εικόνα (τρέχοντας το παραπάνω) καλώντας οποιαδήποτε εικόνα jpg δεν υπάρχει στον κατάλογο π.χ. img-st.jpg .

Αν δεν είσαι σίγουρος ότι η εικόνα θα προβάλετε συχνά τότε έχει νόημα να φτιάξεις και ένα job που θα τρέχει ανά x διάστημα που είναι το ίδιο με το listener.php (για να μην γεμίζει εικόνες ο server) εκτός από το τελευταίο βήμα της εμφάνισης.

deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 28 Μάιος 2012 16:59

Δεν γινετε τιποτα :(

Εικόνα

Και ο κωδικας:

Εικόνα

Δεν κανει rename της εικονες. Δεν θα μπορουσε να κανει rename της εικονες ολες σε μια με το ονομα π.χ img-st.jpg και να ανανεωνει καθε 1 λεπτο την ιδια εικονα? αυτο γινετε με software σαν το ispy αλλα πιο το νοημα να εχω τον υπολογιστη ανοιχτο συνεχεια.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Rename εικονάς σε FTP

Δημοσίευση από jpk » 28 Μάιος 2012 18:11

Το δοκίμασα πριν στο στείλω και δουλεύει . Δεν κάνει rename έτσι όπως λες εσύ , χρησιμοποιεί την πιο πρόσφατη και σβήνει τις παλιότερες, δεν σου συμβαίνει αυτό; Τι ακριβώς σου συμβαίνει όταν καλείς π.χ. την εικόνα img-st.jpg ? Χρησιμοποιείς Apache με mod rewrite ?

Ναι θα μπορούσε να κάνει rename κάποιο job με τον ίδιο ακριβώς τρόπο (κάνε πρώτα να δουλέψει αυτό κατάλαβέ το και μετά απλά διάβασε το πώς γίνεται rename).

Αλλά για να είμαστε ακριβείς μια τέτοια προσέγκιση δεν θα πρόβαλε την τελευταία pic. Π.χ. ανεβαίνει η pic στην 18:00:01 και τρέχει αυτόματα κάθε ένα λεπτό π.χ. στις 18:01:00 , το αποτέλεσμα είναι ότι στις 18:01:59 ο επισκέπτης θα βλέπει την εικόνα που έχει ανέβει σχεδόν δύο λεπτά πριν στις 18:00:01 και όχι την εικόνα που είναι η πιο πρόσφατη. Σκέψου το λίγο , δοκίμασε , διάβασε και αν δεν σου δουλεύει κάτι πες μας γιατί για να βοηθήσουμε&#8230;

deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 28 Μάιος 2012 18:43

jpk έγραψε:Το δοκίμασα πριν στο στείλω και δουλεύει . Δεν κάνει rename έτσι όπως λες εσύ , χρησιμοποιεί την πιο πρόσφατη και σβήνει τις παλιότερες, δεν σου συμβαίνει αυτό; Τι ακριβώς σου συμβαίνει όταν καλείς π.χ. την εικόνα img-st.jpg ? Χρησιμοποιείς Apache με mod rewrite ?

Ναι θα μπορούσε να κάνει rename κάποιο job με τον ίδιο ακριβώς τρόπο (κάνε πρώτα να δουλέψει αυτό κατάλαβέ το και μετά απλά διάβασε το πώς γίνεται rename).

Αλλά για να είμαστε ακριβείς μια τέτοια προσέγκιση δεν θα πρόβαλε την τελευταία pic. Π.χ. ανεβαίνει η pic στην 18:00:01 και τρέχει αυτόματα κάθε ένα λεπτό π.χ. στις 18:01:00 , το αποτέλεσμα είναι ότι στις 18:01:59 ο επισκέπτης θα βλέπει την εικόνα που έχει ανέβει σχεδόν δύο λεπτά πριν στις 18:00:01 και όχι την εικόνα που είναι η πιο πρόσφατη. Σκέψου το λίγο , δοκίμασε , διάβασε και αν δεν σου δουλεύει κάτι πες μας γιατί για να βοηθήσουμε&#8230;
Τα καταφερα! yesssss και το script το τροποποίησα λιγο κοιτάζοντας και στο site της php και το script ειναι

Κώδικας: Επιλογή όλων

<?php 

$images = "./"; 
$countfile = 0; 
$allowed = array&#40;'png','jpg','jpeg','gif'&#41;; 

if &#40;$handle = opendir&#40;$images&#41;&#41; &#123; 
while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123; 
if &#40;$file != "." && $file != ".." && &#40;in_array&#40;strtolower&#40;substr&#40;$file,-3&#41;&#41;,$allowed&#41;&#41;&#41; &#123; 
$files&#91;&#93; = $file; 
$countfile ++; 
&#125; 
&#125; 
closedir&#40;$handle&#41;; 
&#125; 

if &#40;$countfile != 0&#41; &#123; 
sort&#40;$files&#41;; 
&#125; 

$lastimg = $files&#91;&#40;$countfile-1&#41;&#93;; 
echo '<HTML>'; 
echo '<HEAD>'; 
echo '<META HTTP-EQUIV=REFRESH CONTENT="60;URL=http&#58;//www.isert_your_url_here.com/webcam/index.php">'; 
echo '<TITLE>My Webcam</TITLE>'; 
echo '</HEAD>'; 
echo '<BODY>'; 
echo '<br><br><center>'; 
echo '<img src="./'; 
echo $lastimg; 
echo '" alt="webcam image" border=0 width=640 height=480><br>'; 
echo $lastimg; 
echo '</center>'; 
echo '</BODY>'; 
echo '</HTML>'; 

echo "\r\n"; 

foreach &#40;$files as $file&#41; &#123; 
if &#40;$file != $lastimg&#41; &#123; 
unlink&#40;$file&#41;; 
&#125; 
&#125; 

?>


Τωρα κατι τελευταιο, πως, μπορω να βαλω καπιο τιτλο στην εικονα ή το Logo μαζι και με ημερομηνια και ωρα? θα μπορουσες να τροποποιησης το script και να βαλεις π.χ www.website.com αριστερα στην γωνια?

Άβαταρ μέλους
ideal
Δημοσιεύσεις: 302
Εγγραφή: 12 Φεβ 2011 16:26

Rename εικονάς σε FTP

Δημοσίευση από ideal » 29 Μάιος 2012 01:18

Δεν μπορούμε να λύσουμε τα προβλήματά μας χρησιμοποιώντας τον ίδιο τρόπο σκέψης που χρησιμοποιήσαμε όταν τα δημιουργήσαμε. -Α. Einstein

Rent a Car

deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 29 Μάιος 2012 12:04

Τωρα αντιμετωπιζω ενα αλο σοβαρο προβλημα με το παραπανω script. Αν δεν επισκεφθεις το page γεμιζει ολος ο server με εικονες και μονο εαν επισκεφθεις το page που καλεις την εικονα διαγραφοντε η παλιες και μενει η πιο προσφατη. Αυτο οπως καταλαβα γινετε με Cron Job πια ειναι η εντολη για old delete jpg καθε 30 λεπτα?
CronJob:

Εικόνα

Άβαταρ μέλους
ideal
Δημοσιεύσεις: 302
Εγγραφή: 12 Φεβ 2011 16:26

Rename εικονάς σε FTP

Δημοσίευση από ideal » 30 Μάιος 2012 01:25

Απο οσο ξέρω δεν κανουν ολες οι εντολες cron σε ολους τους server γιαυτο μιλα με την εταιρεια hostin να σου δωσουν την εντολη και ρωτα βασικα αν επιτρεπει cron. Λογικά θα επιτρεπει για να το εχει μεσα στο panel... Δες τα παρακατω:
http://www.freestuff.gr/forums/viewtopic.php?t=59817
http://www.google.gr/search?q=cron+job+php+file
Δεν μπορούμε να λύσουμε τα προβλήματά μας χρησιμοποιώντας τον ίδιο τρόπο σκέψης που χρησιμοποιήσαμε όταν τα δημιουργήσαμε. -Α. Einstein

Rent a Car

deletakis48

Rename εικονάς σε FTP

Δημοσίευση από deletakis48 » 30 Μάιος 2012 14:39

Ευχαριστώ για τις απαντήσεις σας! αν αντιμετωπίσω πρόβλημα θα επανέλθω.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες