m
q`Ic           @   s  d  Z  d Z d Z d Z e Z d Z d Z d Z d Z	 d Z
 d	 Z d
 Z d Z d k Z d k Z d k Z d k Z d k Z h  d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d  d! <d" d# <Z d$   Z d%   Z d&   Z d'   Z d( d) d*  Z d+   Z d,   Z d-   Z d.   Z d/   Z d0 d1  Z d2   Z d3 d4  Z  d5   Z! d6   Z" d7   Z# e$ d8 j ow y e i% e  Z& e& i'   Wn e( j
 o Z) g  Z& n Xg  Z* x% e& D] Z+ e* i, d9 e e+ f  qWe# e*  n d S(:   i   i   iZ   i   f0.40000000000000002s"   /home/karotka/www/gallerygen/inputs$   /home/karotka/www/gallerygen/galleryt   thumbt   mains   /usr/bin/exift   Galeries   lib/watermark.pngNt   0x0110s   Camera Modelt   0x920as	   Lens Sizet   0x829as   Exposure Timet   0x829ds   F-Numbert   0x8822s   Exposure Programt   0x8827s   ISO Speed Ratingt   0x9204s   Exposure Biast   0x9209t   Flashs   Focal Lengtht   0xa402s   Exposure Modet   0x9207s   Metering Modet   0xa403s   White Balancec         C   s(   d t  i d t  i    |  | f GHd S(   s#   
    Vypisuje hlasky na stdout
    s	   %s %s: %ss   %Y/%m/%d %H:%M:%SN(   t   timet   strftimet	   localtimet   maskt   text(   R   R   (    (    t.   /home/karotka/www/gallerygen/lib/gallerygen.pyt   log{   s     c         C   sU   y" t  i |   t d d |   Wn, t j
 o  } t d d |  | f  n Xd S(   s   
    Vytvori adresar
    t   Is   Create directory: %st   Ws    Cannot create directory: %s <%s>N(   t   ost   mkdirt   dirNameR   t   OSErrort   e(   R   R   (    (    R   R      s     c         C   s   |  i d d  }  t i t d d t d |   } d } | i   d  i	 d  } xd | D]\ } | i	 d  } t i | d	 d  } | o* | | i   d
 | d i   d 7} q[ q[ W| S(   s1   
    Vyextrahuje pomoci binakry exif z fotek
    t    s   \ s    -i t   /t    is   
t   |i    s   : i   s   <br>N(   t   filet   replaceR   t   popent   BINEXIFt   INPUTDIRt   stdoutt   infot   readt   splitt   linest   linet   itemst   exifInfot   gett   Nonet   keyt   strip(   R!   R'   R&   R,   R*   R0   R+   (    (    R   t   extractExifInfo   s     # .c         C   s   d } d } x} |  D]u } | d 7} t | d  } | p | d 8} q n | d | d | f 7} | t |   d j o | d 7} q q W| S(   s4   
    Vrati polozky exifu v textu pro javascript
    R   i    i   R!   s   
        new Photo('%s', '%s')s   ,
N(   t   exifTextt   it	   filesAttrt   fR2   t   addTextt   len(   R5   R6   R4   R7   R3   (    (    R   t   makeExifTxt   s      

R   t   .c         C   s_  t  d d  } | i   } | i   h  d t <d t <d d <d t i d t i	    <d	 t i d
 t i	    <d t
 |   <} d | d <d } x |  D]} } | d c d | | d | | d | d | d d f 7<| o- | t d o | d c d 7<d } q n | d 7} q W| | } t  | d d d  } | i |  | i   d S(   s^   
    Vytvori data pro generovani html a vygeneruje ho podle
    sablony lib/template.html
    s   lib/template.htmlt   rt   titlet	   mainWidtht   picturesR   t   copyYears   %Yt	   generateds
   %d. %m. %Yt   exifDatas   
    <p>i    sb   
        <a href="%smain/%s" class="picture"><img src="%sthumb/%s" width="%s" height="%s" /></a>%sR!   t   widtht   heighti   s   
    </p>
    <p>R   s
   index.htmlt   wN(   t   openR6   R(   t   templatet   closet   TITLEt	   MAINWIDTHR   R   R   R9   R5   t   dataR4   t	   urlPrefixt   IMAGESINROWt	   outputDirt   write(   R5   RK   RM   R6   R4   RJ   RF   (    (    R   t
   createHtml   s&     
f	
 9
c         C   s2   t  d d |  | f  t i d |  | f  d S(   s?   
    Vrati exif z originalu do vygenerovane
    fotografie
    R   s   Restore exif from %s into %ss   /usr/bin/jhead -te %s %sN(   R   t   sourcet   destinationR   R#   (   RP   RQ   (    (    R   t   restoreExif   s     c         C   s!   t  i d t | | |  f  d  S(   Ns"   %s --ifd=0 -t %s --set-value=%s %s(   R   R#   R$   R0   t   valueR!   (   R!   R0   RS   (    (    R   t
   modifyExif   s    c         C   sN   |  i d d  }  t i d |   i   } | d j o d Sn t |  Sd  S(   NR   s   \ s   /usr/bin/jpegexiforient %sR   i   (   R!   R"   R   R#   R(   t   orientationt   int(   R!   RU   (    (    R   t   getJpegOrientation  s
    c         C   sV   h  d d <d d <d d <d d <d	 d
 <d d <d d <d d <} | |  S(   Ni   R   i   s   flip horizontali   s
   rotate 180i   s   flip verticali   t	   transposei   s	   rotate 90i   t
   transversei   s
   rotate 270(   t	   transformR0   (   R0   RZ   (    (    R   t   getTransform  s    N	c         C   st   t  |   } | d j oN d } t |  } t d d |  t i d | |  | f  t	 | |  f Sn t
 |  |  f S(   Ni   s	   .temp.jpgR   s!   Transform jpeg according exif: %ss'   /usr/bin/jpegtran -copy all -%s %s > %s(   RW   t   infileRZ   t   outfileR[   t   actionR   R   R#   t   Truet   False(   R\   RZ   R]   R^   (    (    R   t   transformJpeg  s    i    c         C   s   |  i \ } } | | j o7 |  i d  |  i \ } } | d j o
 | } qS n | d j o | | | } n | | | | j o | | | } | } n | | | } | } |  i | | f t	 i
  S(   sV   
    Zmeni velikost obrazku podle predanych parametru
    @image - Image instance
    iZ   R   i    N(   t   imaget   sizeRB   RC   t   rotatet   imgTypet   maxWidtht	   maxHeightt   resizet   Imaget	   ANTIALIAS(   Rb   Re   Rf   Rg   RC   RB   (    (    R   t   resizeImage)  s     
c         C   s   | d j o | d j p t  |  i d j o |  i d  }  n |  i   }  |  i   d } t i	 |  i
 |  } |  i |  |  S(   sG   
    Vrati obrazek z upravenou opacity
    @image - Image instance
    i    i   t   RGBAi   N(   t   opacityt   AssertionErrorRb   t   modet   convertt   copyR)   t   alphat   ImageEnhancet
   Brightnesst   enhancet   putalpha(   Rb   Rm   Rr   (    (    R   t   reduceOpacityI  s     !i   c   
      C   s  | d j  o t | |  } n |  i d j o |  i d  }  n t i d |  i d  } | d j op xDt d |  i d | i d  D]G }	 x> t d |  i d | i d  D] } | i | | |	 f  q Wq Wn | d j o t t |  i d  | i d t |  i d  | i d  } t | i d |  } t | i d |  } | i | | f  } | i | |  i d | d |  i d | d f  n | i | |  t i | |  |  S(	   s@   
    Prida watermark do obrazku
    @image - Image instance
    i   Rl   i    t   tilet   scalei   N(   i    i    i    i    (   Rm   Rw   t   markRb   Ro   Rp   Ri   t   newRc   t   layert   positiont   ranget   yt   xt   pastet   mint   floatt   ratioRV   RD   t   hRh   t	   composite(
   Rb   Rz   R}   Rm   R|   R   R   RD   R   R   (    (    R   t   genWatermark\  s(     ! ! "?8c         C   sI   t  |  d  } t  | d  } | i | i    | i   | i   d S(   s   
    Zkopiruje soubor
    R;   RD   N(   RE   RP   t   frt   targett   fwRN   R(   RG   (   RP   R   R   R   (    (    R   t   cp  s     
c           C   s   t  d d t  t  d d t  t  d d t  t  d d t  t  d	 d
 t  t  d d t  t  d d t  t  d d t  t  d d t  d S(   sT   
    Nakopiruje do vystupniho adresare vsechny potrebne
    soubory pro galerii
    s
   lib/all.jss	   %s/all.jss   lib/close.gifs   %s/close.gifs   lib/next.gifs   %s/next.gifs   lib/prev.gifs   %s/prev.gifs   lib/info.gifs   %s/info.gifs   lib/pause.gifs   %s/pause.gifs   lib/stop.gifs   %s/stop.gifs   lib/play.gifs   %s/play.gifs   lib/run_play.gifs   %s/run_play.gifN(   R   t	   OUTPUTDIR(    (    (    R   t   cpStuff  s     c         C   s  y0 t  i d } | d d j o | d 7} n Wn t j
 o } d } n Xt d j o t t  n t d j o t t  n t d t } t d t
 } t |  t |  t o t i t  } n g  } t d d t  x|  D]} y` t d d	 |  t |  \ } } } | o  t i |  } t i |  n t i |  } Wn/ t j
 o# } t d
 d | | f  q n Xd | t i i |  f } t  | d t!  } t d d |  | i# \ } } t o8 t d d |  t& | | | d | d f t'  } n | i) d  } | i* | d d t+ d | t i i |  f }
 t  | d t-  } t d d |
  | i) d  i* |
 d d t+ | i# \ } }	 | i1 h  d t i i |  <d | <d |	 < q Wt2 | | t  t3   d  S(   Ni   iR   R   R:   s   ./R   s$   Reading all files from directory: %ss   Reading file: %sR   s   File <%s> is not a image: %sss   %s/%sR   s   Save main file: %ss%   Generate watermark into the image: %si|  iP   t   RGBt   JPEGt   qualityR    s   Save thumb file: %sR!   RB   RC   (   R:   s   ./(   R:   s   ./(4   t   syst   argvRK   t
   IndexErrorR   R%   R   R   t   THUMBDIRt	   thumbPatht   MAINDIRt   mainPatht	   WATERMARKRi   RE   t   WATERMARKPATHRz   R5   R   t   filesR6   Ra   t   newFileR!   t   oldFileRb   R   t   unlinkt   IOErrort   patht   basenamet   fileMainRk   RI   t   mImageRc   t   mWidtht   mHeightR   t   WOPACITYt   imRp   t   savet   QUALITYt	   fileThumbt
   THUMBWIDTHt   tImaget   tWidtht   tHeightt   appendRO   R   (   R   R   Rb   RK   R   R   R!   R   Rz   R   R   R   R   R   R   R6   R   R5   R   R   R   (    (    R   R     s^    

 '8t   __main__s   %s/%s(-   R   RI   R   RL   R_   R   R   R%   R   R   R   R$   RH   R   Ri   Rs   R   R   R   R-   R   R   R2   R9   RO   RR   RT   RW   R[   Ra   Rk   Rw   R   R   R   R   t   __name__t   listdirR   t   sortR   R   t	   filenamesR6   R   ('   Ra   RH   RO   R   Rk   RL   RI   R   Rs   R2   R   R%   RR   R   R   RW   R-   R   R9   R   R   R$   R[   RT   R   R   Rw   R   R6   R   Ri   R   R   R   R   R   R   R   R   (    (    R   t   ?=   sX   			r					/	
				 	(			W 