2015-05-02 14 views
5

Tôi làm việc trong các cửa sổ và máy chủ wamp.ImageMagick Không có đại biểu giải mã cho định dạng hình ảnh này

đây là mã PHP của tôi với Imagick

$imagick = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/' . $this->_name); 

nơi $_SERVER['DOCUMENT_ROOT'].'/'.$this->_name hiển thị:

D: /Sources/my_project/public/media/2/9/1/05201502/55450e1b6543a05201502_9.PNG

Tôi đã kiểm tra hình ảnh đó và nó tồn tại trong thư mục.

Nhưng Imagick ném một ngoại lệ:

của router ngoại lệ 'ImagickException' với thông điệp 'không giải mã đại biểu cho điều này định dạng hình ảnh ' D:/Nguồn/my_project/public/media/2/9/1 /05201502/55450b10d8ea705201502_9.PNG' @ lỗi/constitute.c/ReadImage/555' trong D: \ Sources \ my_project \ library \ dự án \ Image.php trên đường dây 225

tôi đã tìm kiếm một giải pháp, nhưng không tìm thấy, làm thế nào tôi có thể sửa lỗi này? cảm ơn bạn

Cập nhật: Đây là kết quả khi tôi gõ convert -version trong dòng lệnh:

Version: ImageMagick 6.8.8-4 Q16 x86 2014-01-29 http://www.imagemagick.org 
    Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC 
    Features: DPC Modules OpenMP 
    Delegates: bzlib cairo freetype jbig jng jp2 jpeg lcms lqr pangocairo \ 
      png ps rsv g tiff webp xml zlib 

cập nhật

Đây là phpinfo của imagick.

số ImageMagick các định dạng được hỗ trợ: 0
định dạng ImageMagick hỗ trợ: không có giá trị

+1

Vui lòng thêm cả 'phpinfo()' Định dạng hình ảnh được hỗ trợ ImageMagick. Ngoài ra - hãy đảm bảo rằng tệp có thể đọc được bằng PHP với 'readfile()' hoặc hàm tương tự. –

+0

@KalleVolkov, Cảm ơn bạn đã đề xuất, tôi đã cập nhật;) – SmootQ

Trả lời

6

Dường như mô-đun ImageMagick PHP của bạn không hỗ trợ bất kỳ định dạng hình ảnh nào.

Hãy thử tìm cài đặt ImageMagick khác hoặc cài đặt PHP từ đầu.

Ngoài ra - có vẻ như đã có là question/answer trong SO về điều đó

+0

Tôi sẽ làm điều đó, cảm ơn bạn +1 – SmootQ

+0

Mặc dù tôi đã không giải quyết hoàn toàn vấn đề của tôi, câu trả lời đã giúp tôi rất nhiều, tôi nghĩ rằng tôi bây giờ gần hơn để tìm một giải pháp. Vấn đề tôi nghĩ là với các tập tin MOD_xxx.dll, apache tìm chúng trong/bin thư mục, và tôi có chúng trong thư mục imagick của tôi .... anyway, cảm ơn rất nhiều :), tôi đã đấu tranh với điều này trong hơn 2 tuần. – SmootQ

5

Bạn nên chạy

convert -version 

và báo cáo đầu ra. Trên hệ thống của tôi nó là

Version: ImageMagick 6.9.0-0 Q16 x86_64 2014-12-06 http://www.imagemagick.org 
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC 
Features: DPC Modules 
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig \ 
         jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps \ 
         rsvg tiff webp wmf x xml zlib 

Có đầu ra của bạn bao gồm png là một trong những built-in 'đại biểu'?

Nếu không, hãy cập nhật cài đặt của bạn hoặc xây dựng từ các nguồn hiện tại.

+0

Cảm ơn câu trả lời của bạn, +1, đây là kết quả của tôi 'C: \ Users \ TAQI> convert -version Phiên bản: ImageMagick 6.8.8-4 Q16 x86 2014-01-29 http://www.imagemagick.org Bản quyền: Bản quyền (C) 1999-2014 ImageMagick Studio LLC Tính năng: Mô-đun DPC OpenMP Đại biểu: bzlib cairo freetype jbig jng jp2 jpeg lcms lqr pangocairo png ps rsv g tiff webp xml zlib' – SmootQ

+0

Như bạn có thể thấy, nó chứa png và jpeg, lưu ý rằng vấn đề không chỉ cho hình ảnh png, mà còn cho hình ảnh jpeg. – SmootQ

+1

@SmootQ: Vui lòng cập nhật câu hỏi ban đầu của bạn với nội dung nhận xét của bạn. Nó không được sử dụng nhiều để có thông tin này trong một bình luận ẩn một nơi nào đó ở phía nam của trang ... –

2

Cuối cùng tôi tìm thấy giải pháp cho các cửa sổ openserver tôi/nginx/php-fpm cài đặt:

  1. Tải mới nhất phân phối php_imagick cho các phiên bản của PHP từ http://windows.php.net/downloads/pecl/releases/imagick/ (ví dụ: php_imagick-3.4.3-7.1-ts-vc14-x64.zip)
  2. Trích xuất chỉ php_imagick.dll từ lưu trữ này vào thư mục "php/ext" của bạn.
  3. Chạy phpinfo() và kiểm tra giá trị tại dòng "Imagick được biên dịch bằng phiên bản ImageMagick" (của tôi là: "ImageMagick 6.9.3-7 Q16 x64 ...").
  4. Bây giờ, hãy truy cập http://windows.php.net/downloads/pecl/deps/ và tải xuống phiên bản đúng của tệp Imagick - *. Zip (của tôi là: ImageMagick-6.9.3-7-vc14-x64.zip).
  5. Mở rộng lưu trữ này và sao chép tất cả * tệp .dll từ thư mục "/ bin" vào thư mục "php/ext" của bạn (khoảng 145 tệp).
  6. Khởi động lại máy chủ và kiểm tra phpinfo(). ImageMagick hiện hỗ trợ khoảng 230 định dạng.

Đôi khi phpinfo() hiển thị rằng imagick hỗ trợ tất cả các định dạng, nhưng tập lệnh php không phản hồi - trong trường hợp này hãy kiểm tra kỹ xem bạn có tải xuống phiên bản chính xác của Imagick - *. (ts/nts, VC11/VC14, x64/x86)

+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn, Đã hai năm kể từ khi tôi đăng câu hỏi, cảm ơn bạn đã dành thời gian trả lời, chắc chắn có nhiều người khác cần nhiều câu trả lời nhất có thể. +1 – SmootQ

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