Lisp HUG Maillist Archive

Manipulating and writing images

Hello
    Given the lack of responses to my original question I thought I'd
make it easier to help :D Below is a quick demo that will demonstrate
my problem. It displays a jpeg in an output-pane and then copies this
image to another output-pane using make-image-from-pane and
externalize-image. The image in the second output-pane displays
exactly the same corruption i see when I write an image to disk. Just
change *jpeg-image-path* to an appropriate jpeg and run. Note that the
problem appears to occur in the externalize-image function.

    thanks to anyone who has a clue!!

            Andrew


(defclass my-output-pane (capi:output-pane)
  ((the-image :accessor the-image :initform nil)))

(defparameter *jpeg-image-path* #P"Escritorio/test.jpg")

(capi:define-interface photo-test ()
  ()
  (:panes
   (tp-first capi:title-pane :text "First")
   (op-first my-output-pane :accessor op-first :display-callback #'on-draw)
   (tp-second capi:title-pane :text "Second")
   (op-second my-output-pane :accessor op-second :display-callback #'on-draw)
   (pb-copy capi:push-button :callback #'on-copy :text "Copy"))
  (:layouts
   (cl-main capi:column-layout '(gl-main pb-copy) :x-adjust :right)
   (gl-main capi:grid-layout '(tp-first op-first tp-second op-second)
            :columns 2))
  (:default-initargs
   :layout 'cl-main
   :visible-min-width 400
   :visible-min-height 400
   :create-callback #'on-create))

;(capi:display (make-instance 'photo-test))

(defun on-create (ifc)
  (let ((ext-image (gp:read-external-image *jpeg-image-path*)))
    (let ((image-1 (gp:convert-external-image (op-first ifc) ext-image)))
      (setf (the-image (op-first ifc)) image-1))))

(defun on-draw (op x y to-x to-y)
  (declare (ignore x y to-x to-y))
  (when (the-image op)
    (gp:draw-image op (the-image op) 0 0)))

(defun on-copy (data ifc)
  (declare (ignore data))
  (setf (the-image (op-second ifc))
        (gp:convert-external-image
         (op-second ifc) 
         (gp:externalize-image
          (op-first ifc)
          (gp:make-image-from-port (op-first ifc)))))
  (gp:invalidate-rectangle (op-second ifc)))


Re: Manipulating and writing images

Unable to parse email body. Email id is 5389

Re: Manipulating and writing images

Unable to parse email body. Email id is 5393

Updated at: 2020-12-10 08:48 UTC