X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=cameras.lisp;fp=cameras.lisp;h=515c61effeae7d0b3f4ff0d068a9108782584dd0;hb=6ea901d7ded9383f9aa30598a25e87e611702eb6;hp=293b21955a108dcc153716bf4c2d018c59254b34;hpb=c9e757cf83865138421a9a09a6237fabbff2aab4;p=cl-photo.git diff --git a/cameras.lisp b/cameras.lisp index 293b219..515c61e 100644 --- a/cameras.lisp +++ b/cameras.lisp @@ -39,14 +39,14 @@ (:format :d100 :make "Nikon" :pixels (3037 . 2024) :imager (23.7 . 15.6) :name "D100") (:format :d70 :make "Nikon" :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D70") (:format :d70s :make "Nikon" :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D70s") - (:format :d50 :make "Nikon" :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D70") + (:format :d50 :make "Nikon" :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D50") (:format :d1x :make "Nikon" :pixels (4028 . 1324) :imager (23.7 . 15.6) :name "D1X") (:format :d2h :make "Nikon" :pixels (2464 . 1632) :imager (23.3 . 15.5) :name "D2H") (:format :d2hs :make "Nikon" :pixels (2464 . 1632) :imager (23.3 . 15.5) :name "D2Hs") (:format :300d :make "Canon" :pixels (3072 . 2048) :imager (22.7 . 15.1) :name "300D") (:format :10d :make "Canon" :pixels (3072 . 2048) :imager (22.7 . 15.1) :name "10D") - (:format :d30 :make "Canon" :pixels (0 . 0) :imager (22.7 . 15.1) :name "D30") + (:format :d30 :make "Canon" :pixels (2160 . 1440) :imager (22 . 14.9) :name "D30") (:format :d60 :make "Canon" :pixels (3072 . 2048) :imager (22.7 . 15.1) :name "D60") (:format :350d :make "Canon" :pixels (3456 . 2304) :imager (22.2 . 14.8) :name "350D") (:format :1d :make "Canon" :pixels (2464 . 1648) :imager (27 . 17.8) :name "1D") @@ -127,7 +127,7 @@ the number of megapixels of the sensor. FORMAT should be defined if the CAMERA-SPEC is the number of megapixels so the proper aspect ratio is used." (etypecase sensor-spec - (keyword + ((or string keyword) (getf (find-format sensor-spec) :pixels)) (number (sensor-dimensions-megapixels format sensor-spec)))) @@ -136,6 +136,12 @@ so the proper aspect ratio is used." "Returns the imager dimensions in mm of a FORMAT." (getf (find-format format-spec) :imager)) +(defun pixel-size (format-spec) + "Return pixel size in micrometers." + (let ((pixel-dim (pixel-dimensions format-spec)) + (imager-dim (imager-dimensions format-spec))) + (values (* 1000 (/ (car imager-dim) (car pixel-dim))) + (* 1000 (/ (cdr imager-dim) (cdr pixel-dim)))))) (defun output-dimensions (format-spec) "Returns the output dimensions in mm of a FORMAT." (getf (find-format format-spec) :output))