2009-07-22 61 views
19

Tôi cần phải tạo tệp PSD lớp với ImageMagick hoặc bất kỳ công cụ dòng lệnh nào khác có sẵn trên nền tảng Linux. Vì tôi cần phải làm điều này trên máy chủ Linux, tôi không thể sử dụng kịch bản Photoshop.Cách tạo tệp PSD lớp từ dòng lệnh?

Lệnh ImageMagick bên dưới tạo tệp PSD với một lớp duy nhất, trong đó hai hình ảnh (ở đây: fractal plasma) được đặt bên dưới một hình ảnh khác. (Tôi sử dụng ImageMagick 6.5.3-10 2009/07/31 Q16, mới nhất có sẵn trong MacPorts.)

convert -size 100x100 plasma:fractal plasma:fractal -append out.psd 

Làm thế nào để tạo ra một tập tin PSD nơi mỗi hình ảnh là trong lớp của riêng mình, và một lớp được trực tiếp phía trên khác?

Hoặc, có công cụ dòng lệnh nào khác cho phép tôi thực hiện việc này không?

Cập nhật: Bất kỳ tùy chọn nào khác ngoài dòng lệnh GIMP?

Trả lời

13

Nếu ImageMagick không hoạt động, tôi sẽ xem Gimp command line.

Các lệnh sau đây tạo ra một tập tin PSD 2 lớp cho tôi trong giao diện điều khiển tương tác:

> (gimp-image-new 200 200 0) 
(1) 
> (gimp-layer-new 1 200 200 0 "layer-1" 100 0) 
(2) 
> (gimp-layer-new 1 200 200 0 "layer-2" 100 0) 
(3) 
> (file-psd-save 0 1 0 "test.psd" "test.psd" 0 0) 
> (gimp-image-add-layer 1 2 -1) 
> (gimp-image-add-layer 1 3 -1) 
> (file-psd-save 0 1 1 "test.psd" "test.psd" 0 0) 

Đó sẽ cần phải được chuyển đổi thành một kịch bản-fu kịch bản (file .scm) và có thể được thực hiện từ dòng lệnh với một cái gì đó như thế này:

gimp -i -b '(your-script-name "test.psd" 200 200)' -b '(gimp-quit 0)' 
+0

Nó không phải là ImageMagick sẽ không hoạt động, đó là tôi không biết làm thế nào để làm cho nó hoạt động đúng ... Để sử dụng GIMP là ý tưởng thú vị, cảm ơn bạn. Tuy nhiên, tôi hơi lo lắng về việc cần phải cài đặt nó trên máy chủ mà không có hệ thống X Window và Gnome ... Nó sẽ không quá nặng nề? –

+0

GIMP chắc chắn nặng hơn ImageMagick, và từ những gì tôi đọc, nó cũng sẽ không hoạt động nhanh. Nhưng từ những gì tôi đọc của ImageMagick, tôi không chắc chắn nó có thể tạo ra lớp PSD, chỉ cần chỉnh sửa hoặc san bằng chúng. –

3

Dưới đây là một số liên kết hữu ích cho bạn:

Các liên kết thứ hai là sử dụng với PHP, nhưng nó thực thi ImageMagick, chỉ sử dụng các lệnh, không phải cú pháp tất cả PHP, chỉ dòng exec mã.

Hy vọng tôi sẽ giúp bạn!

+0

Tại sao bỏ phiếu xuống ?????????? –

+1

Xin lỗi, nhưng bạn có thể vui lòng chỉ cho tôi nơi trong các liên kết đó được mô tả cách tạo ** tệp PSD với các lớp không? –

3

Bạn có thể dùng -adjoin để kết hợp chuỗi hình ảnh.

convert -size 100x100 -alpha set plasma:fractal -alpha set plasma:fractal -adjoin out.psd 
  • Các kênh alpha là cần thiết cho các coder PSD.
  • Thứ tự của hình ảnh là lớp dưới cùng của lớp trên cùng.
  • Có rất nhiều vấn đề tương thích với Photoshop và GIMP tùy thuộc vào cài đặt.

Sử dụng:

  • ImageMagick 6.5.4-6
  • Photoshop CS2
+0

Thực tế có một số vấn đề tương thích. Cả hai Photoshop CS4 và OS X được xây dựng trong previewer rõ ràng từ chối mở hình ảnh kết quả.:-( –

+0

Cập nhật lệnh để làm việc với Photoshop CS2, nhưng tôi không thể kiểm tra CS4 – Jared314

+0

Vẫn không hoạt động với cả CS4 lẫn CS3 cũng như trình xem OS X. Photoshop nói: "Đã xảy ra sự cố khi đọc dữ liệu lớp. Đọc dữ liệu tổng hợp thay vào đó? "và sau đó" Không thể hoàn tất yêu cầu của bạn vì tệp không tương thích với phiên bản Photoshop này. –

7

Tôi sử dụng các dòng lệnh bên dưới. Tôi đã không gặp phải bất kỳ vấn đề trong việc mở PSD tạo ra trong Photoshop, tuy nhiên mỗi lớp xuất hiện như là một lớp nền, và bạn phải chuyển đổi nó thành một lớp thực sự đầu tiên để chỉnh sửa thứ tự lớp.

Đây là dòng lệnh. Căn cứ vào danh sách các hình ảnh (im1.xxx, im2.xxx vv, IM1 là lớp dưới cùng,) danh sách các nhãn cho các lớp ("label1", "LABEL2" ...):

convert (-page +0+0 -label "label1" im1.xxx[0] -background none -mosaic -set colorspace RGB) (-page +0+0 -label "label2" "im2.xxx"[0] -background none -mosaic -set colorspace RGB) (-clone 0--1 -background none -mosaic) -alpha Off -reverse "out.psd" 

Đó là, đối với mỗi lớp, bạn có cái gì đó như

(-page +0+0 -label "optional_label" im1.xxx[0] -background none -mosaic -set colorspace RGB) 

nhãn/tên của lớp là tùy chọn (loại bỏ -label nếu không có.) các [0] trong im1.xxx[0] lấy hình ảnh đầu tiên trong tập tin hình ảnh, trong trường hợp có tồn tại một hình nhỏ trong Exif.

Trên Unix/OSX, bạn phải bảo vệ ngoặc:

\(-page +0+0 -label "optional_label" im1.xxx[0] -background none -mosaic -set colorspace RGB \) 

Nếu tên ảnh chứa ký tự đặc biệt, bạn có thể bảo vệ chúng với " (ví dụ "c:\my im1.png") mà không cần bất kỳ vấn đề.

Hy vọng điều này sẽ hữu ích.

0

Tôi đồng ý với Jon Galloway, giao diện điều khiển gimp là lựa chọn tốt hơn. Có kịch bản của tôi:

(define (pngtopsd width height png-paths psd-path) 
(define (add-layers image png-paths) 
    (if (null? png-paths) 0 
     (let* 
      ((png (car png-paths)) 
      (new-layer (car (gimp-file-load-layer 0 image (car png))))) 

      (gimp-image-insert-layer image new-layer 0 -1) 
      (gimp-item-transform-2d new-layer 0 0 1 1 (cadr png) (caddr png) (cadddr png)) 
      (add-layers image (cdr png-paths)) 
     ) 
    )) 

(let* 
    ((png (car png-paths)) 
    (image (car (gimp-file-load 1 (car png) (car png)))) 
    (drawable (car (gimp-image-get-active-layer image)))) 

    (gimp-image-resize image width height 0 0) 
    (gimp-item-transform-2d drawable 0 0 1 1 (cadr png) (caddr png) (cadddr png))  
    (add-layers image (cdr png-paths)) 
    (file-psd-save 0 image drawable psd-path psd-path 1 0) 
    (gimp-image-delete image) 
)) 

Bạn chỉ cần đặt đoạn mã trên vào tập tin với tên "pngtopsd.scm" bên trong "kịch bản" thư mục của bạn gimp ("c: \ Program Files \ GIMP 2 \ share \ gimp \ 2.0 \ scripts \ "cho windows) và bạn có thể tạo psd lớp từ danh sách ảnh png với phép biến đổi (dịch hoặc xoay) của mỗi lớp. mẫu Cách sử dụng:

gimp-console-2.8.exe -i -b "(pngtopsd (list (list \"c:/../1.png\" 0 500 500) (list \"c:/.../2.png\" 0.7 200 1000) (list \"c:/.../3.jpg\" -0.5 1000 0)) \"c:/.../result.psd\")" 

có (danh sách \ "c: /.../ 2.png \" 0,7 200 1000) có nghĩa là: - 0,7 là góc quay của hình ảnh (theo radian) - 200 1000 là x và y dịch chuyển thành hình ảnh

0

Bạn có thể tạo PSD lớp với ImageMagick, nhưng lưu ý hình ảnh đầu tiên thực sự được sử dụng làm hình ảnh xem trước (ví dụ: tổng hợp tất cả các lớp).

convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd 

Sẽ tạo PSD 2 lớp.

Các vấn đề liên quan