|
|
@@ -25,20 +25,18 @@
|
|
|
|
|
|
(defun exif-to-dim (exif)
|
|
|
(when exif
|
|
|
- (let ((width (and exif (or (zpb-exif:exif-value :PixelXDimension exif)
|
|
|
- (zpb-exif:exif-value :ImageWidth exif))))
|
|
|
- (height (and exif (or (zpb-exif:exif-value :PixelYDimension exif)
|
|
|
- (zpb-exif:exif-value :ImageHeight exif)))))
|
|
|
+ (let ((width (or (zpb-exif:exif-value :PixelXDimension exif)
|
|
|
+ (zpb-exif:exif-value :ImageWidth exif)))
|
|
|
+ (height (or (zpb-exif:exif-value :PixelYDimension exif)
|
|
|
+ (zpb-exif:exif-value :ImageHeight exif))))
|
|
|
(and width height (list width height)))))
|
|
|
|
|
|
(defun get-dims (path)
|
|
|
- (with-open-file (in path :element-type '(unsigned-byte 8))
|
|
|
- (case (intern (string-upcase (pathname-type path)) "KEYWORD")
|
|
|
- (:jpg (multiple-value-bind (h w)
|
|
|
- (jpeg:decode-stream-height-width in)
|
|
|
- (list w h)))
|
|
|
- (:png (let ((png (png-read:read-png-datastream in)))
|
|
|
- (list (png-read:width png) (png-read:height png)))))))
|
|
|
+ (ignore-errors
|
|
|
+ (read-from-string
|
|
|
+ (uiop:run-program
|
|
|
+ (list "identify" "-format" "(%w %h)" (namestring path))
|
|
|
+ :output :string))))
|
|
|
|
|
|
(defun load-photo-info (path)
|
|
|
(with-open-file (in path :element-type '(unsigned-byte 8))
|