2017-02-27 35 views
0

我的Mac上使用[net.mikera/imagez "0.12.0"]當我運行示例代碼加載圖像我得到一個異常: user> (def ant (load-image-resource "mikera/image/samples/Ant.png")) CompilerException java.lang.IllegalArgumentException: No implementation of method: :as-image of protocol: #'mikera.image.protocols/ImageResource found for class: nil, compiling:(form-init214709365644880775.clj:59:16) imagez加載圖像資源抱怨「沒有實現的方法:作爲像」

我從Leiningen/Luminus項目中運行此代碼。

也許我錯過了一些用於處理圖像的依賴關係?

我的Java版本: java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

回答

1

您使用的是使用Clojure的功能resource加載圖像庫。由於文件Ant.png不在資源路徑上,所以對resource的調用返回nil,這就是您看到此消息的原因。所以,你需要將路徑添加到您的圖像,如下所示,在您project.clj

:resource-paths ["/full/path/to/mikera/image/samples"] 

然後在你的代碼中,引用文件:

(def ant (load-image-resource "Ant.png")) 
+0

這是有道理的,我試圖最初從中沒有任何工作的絕對路徑(我的桌面)加載。當我把圖像放入我現有的資源/ public/img中時,它會工作:) –

1

要解決創建一個名爲resources目錄。這將是您可能已有的目錄的兄弟姐妹src。把你的文件「Ant.png」放在這個目錄下。然後,你可以簡單地這樣:

(def ant (load-image-resource "Ant.png"))