DSLR 檔案放置計畫

數位單眼檔案整理計畫 (照片整理計畫)

目的:將數位相機拍攝照片、影片放置在網站上,方便平板、手機觀看存取

規格:

  • 可分類
  • 根據分類或自定義讀取權限
  • 照片、影片必須可在 Android, IOS 上正常觀看
  • 可直接上傳 RAW 格式照片
  • 上傳時可選擇資料夾 (搭配 Chrome 瀏覽器)

技術:

  • PHP, MySQL
  • HTML5, Javascript
  • Jpeg, PNG 圖檔格式轉檔
  • RAW 格式圖檔轉檔
  • Exif 格式存取
  • 影片轉檔

 

  1. 把檔案放上去
  2. 處理成可以在 HTML5 可以接受的格式
  3. 顯示及播放

數位單眼有什麼檔案?

大致上分為三類

  1. RAW 格式圖檔
  2. Jpeg 圖檔
  3. 影片檔 (MOV, MTS…)

觀看、分享方法

放置在網站,主要使用 HTML5 技術

使用該方法限制及前置作業

圖檔和硬片都需要縮小尺寸、重新取樣、轉換格式後才上傳至網站上

 

1多檔案及資料夾檔案上傳

 

2. 讀取相片 Exif

PHP exif_read_data()

因為使用 PHP 官方也有 exif 的功能,所以

補上 exif 後

就吐出錯誤訊息了

而且尺寸也是錯的,再次 Google 之後找到了 Exiv2 – Image metadata library and tools

FreeBSD 9.1 安裝 exiv2

CentOS 6 安裝 exiv2

就可以得到正確的資訊了

NIKON D7000 RAW

SONY NEX-5

HUAWEI P9+

 

使用 PHP 分析字串取得 Exif

參考: php-exiv2/Exiv2ImageExplorer.php at master · joelalejandro/php-exiv2 · GitHub

 

拍攝方向

取得影片格式資訊

 

舊數位相機 MOV 格式影片轉檔

 

RAW 格式轉檔

使用 dcraw 來進行處理

FreeBSD

CentOS

 

 

將 RAW 格式轉成 JPEG

GUI

IOS 的自動旋轉問題

取消 fancybox 的 click

  • http://jsfiddle.net/DigitalBiscuits/DBvt7/211/

 

 

上傳即時更新

瀑布流布局

多圖處理技巧:延遲顯示、分次載入

延遲顯示 – 延遲顯示是將未出現的圖片就不載入的 Javascript 技術,一般使用 Lazy Load 來完成

分批載入 – 分批載入則是類似分頁模式,將同一頁圖檔分成數次載入。可以有顯示同頁或是分頁顯示等不同處理方式。

一般來說,對於一個相簿高達上千張圖檔需要顯示時,使用分批載入會較為恰當,因為必須考慮行動裝置硬體效能問題。

影片

Error: Unsupported sample rate 7875

早期相機影片的錄影通常使用很奇怪的格式 (相較現在的 MPEG4 來說),不是奇怪的組合就是奇怪的數值設定。如果不設定預設處理數值 ffmpeg 可能會無法支援而報錯。

例如以下範例,2004 年的 NIKON Coolpix 3200 ,影像使用 mjpeg ,聲音使用 pcm ,問題出在聲音的取樣頻率,因為早期硬體效能、儲存空間問題,所以設定為 7875Hz,而此數值 ffmpeg 是不支援轉換的,必須指定支援數值。

上傳佇列、背景轉檔

/etc/crontab

 

299 total views, no views today

建置自己的 IP 地理位置查詢

IP 地理資料庫下載

將 CSV 資料匯入 MySQL 資料庫

需要注意的是,下載下來的 csv 檔案,換行是 PC 格式

MySQL IPv4 範圍查詢

INET_ATON() 是專為 IPv4 設計的數值轉換 function

優化

DB-IP 提供了 PHP 的範例,大概長這樣

可以從 5 秒的查詢縮短到 1 秒,可惜的是還是不夠快,更快的方式就是將問題轉換成數學題,並且將需要運算的地方事先準備好

增加 ip_start_inet 以及 ip_end_inet 兩個欄位,填入的資料為 INET_ATON() 轉換後的結果

查詢時使用 <>= 運算元

優化後可在低於 0.1 秒內完成

274 total views, no views today

Javascript 自定義 alert(), confirm()

 

參考來源:https://rs.twnic.net.tw/cgi-bin/supermarket.cgi

 

 

332 total views, no views today

jBox 第一次載入圖片無法顯示

jBox 使用 background image 來顯示圖片,在第一次點選圖片時都無法顯示

解決的方式是在第一次載入顯示時,加上 setTimeout()

 

189 total views, 1 views today