How to convert erlang module (wxImage) const/array to a list in Elixir?Using the :httpc erlang module from ElixirHow to join strings in Elixir?Convert Elixir string to integer or floatIn Elixir, how can a range be converted to a list?wxSplitterWindow.splitVertically not accepting windows in Elixir/ErlangHow do you check for the type of variable in ElixirWhere does Elixir/erlang fit into the microservices approach?Using Erlang library with ElixirConvert Erlang catch to ElixirHow to Create an Erlang property list from Elixir

How can I tell water pressure is too high for the washing machine?

How can internet speed be 10 times slower without a router than when using the same connection with a router?

Start job from another SQL server instance

Python 3 - simple temperature program

Does "Captain Marvel" contain spoilers for "Avengers: Infinity War"?

Why would a military not separate its forces into different branches?

Is 'contemporary' ambiguous and if so is there a better word?

What do I do if my advisor made a mistake?

What are the advantages of luxury car brands like Acura/Lexus over their sibling non-luxury brands Honda/Toyota?

How does the reduce() method work in Java 8?

Can my 2 children, aged 10 and 12, who are US citizens, travel to the USA on expired American passports?

Install LibreOffice-Writer Only not LibreOffice whole package

Voltage Balun 1:1

Can there be a single technologically advanced nation, in a continent full of non-technologically advanced nations?

Dangerous workplace travelling

Copy previous line to current line from text file

Why didn't this character get a funeral at the end of Avengers: Endgame?

Where are the "shires" in the UK?

Any examples of liquids volatile at room temp but non-flammable?

Mug and wireframe entirely disappeared

Has the Hulk always been able to talk?

Is there a word that describes the unjustified use of a more complex word?

Is there precedent or are there procedures for a US president refusing to concede to an electoral defeat?

What do "Sech" and "Vich" mean in this sentence?



How to convert erlang module (wxImage) const/array to a list in Elixir?


Using the :httpc erlang module from ElixirHow to join strings in Elixir?Convert Elixir string to integer or floatIn Elixir, how can a range be converted to a list?wxSplitterWindow.splitVertically not accepting windows in Elixir/ErlangHow do you check for the type of variable in ElixirWhere does Elixir/erlang fit into the microservices approach?Using Erlang library with ElixirConvert Erlang catch to ElixirHow to Create an Erlang property list from Elixir






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















I am trying to manipulate a "test.jpg" image in Elixir by using Erlang wxImage library, but I am getting an error. I do not know how to convert the array/const output to a list so I can use it in Elixir.



Also I do not know why there is a clause function error when the syntax seems to be alright?



defmodule Imedit2 do
def readimg(image) do
:ok, _file = File.open("happy737.txt", [:write])
IO.puts("hi there")
_output =
image
|> File.read!()
|> :wxImage.getData()
|> to_charlist()

# IO.puts(is_list(output))
# IO.puts(is_tuple(output))
# IO.binwrite(file, output)
# File.close(file)
end
end


iex(58)> Imedit2.readimg("test.jpg")
hi there
** (FunctionClauseError) no function clause matching in :wxImage.getData/1

The following arguments were given to :wxImage.getData/1:

# 1
<<255, 216, 255, 226, 2, 28, 73, 67, 67, 95, 80, 82, 79, 70, 73, 76, 69, 0, 1,
1, 0, 0, 2, 12, 108, 99, 109, 115, 2, 16, 0, 0, 109, 110, 116, 114, 82, 71,
66, 32, 88, 89, 90, 32, 7, 220, 0, 1, 0, 25, ...>>

gen/wxImage.erl:405: :wxImage.getData/1
lib/imedit2.ex:5: Imedit2.readimg/1









share|improve this question
























  • You are passing a binary into the function :wxImage.getData/1. If you look at the documentation for that function, it expects a reference to the image, not the images binary data. I have never used this library before, but it looks like you need to call :wxImage.loadFile/2,3,4 in order to load your image from a file. You will probably also need to call the new/0 function to first get a blank image reference.

    – Justin Wood
    Mar 23 at 1:19











  • I thought that File.read loads the image and that's why there is an output of numbers as a result of wximage processing the loaded image.

    – Arto Kalishian
    Mar 23 at 1:56

















0















I am trying to manipulate a "test.jpg" image in Elixir by using Erlang wxImage library, but I am getting an error. I do not know how to convert the array/const output to a list so I can use it in Elixir.



Also I do not know why there is a clause function error when the syntax seems to be alright?



defmodule Imedit2 do
def readimg(image) do
:ok, _file = File.open("happy737.txt", [:write])
IO.puts("hi there")
_output =
image
|> File.read!()
|> :wxImage.getData()
|> to_charlist()

# IO.puts(is_list(output))
# IO.puts(is_tuple(output))
# IO.binwrite(file, output)
# File.close(file)
end
end


iex(58)> Imedit2.readimg("test.jpg")
hi there
** (FunctionClauseError) no function clause matching in :wxImage.getData/1

The following arguments were given to :wxImage.getData/1:

# 1
<<255, 216, 255, 226, 2, 28, 73, 67, 67, 95, 80, 82, 79, 70, 73, 76, 69, 0, 1,
1, 0, 0, 2, 12, 108, 99, 109, 115, 2, 16, 0, 0, 109, 110, 116, 114, 82, 71,
66, 32, 88, 89, 90, 32, 7, 220, 0, 1, 0, 25, ...>>

gen/wxImage.erl:405: :wxImage.getData/1
lib/imedit2.ex:5: Imedit2.readimg/1









share|improve this question
























  • You are passing a binary into the function :wxImage.getData/1. If you look at the documentation for that function, it expects a reference to the image, not the images binary data. I have never used this library before, but it looks like you need to call :wxImage.loadFile/2,3,4 in order to load your image from a file. You will probably also need to call the new/0 function to first get a blank image reference.

    – Justin Wood
    Mar 23 at 1:19











  • I thought that File.read loads the image and that's why there is an output of numbers as a result of wximage processing the loaded image.

    – Arto Kalishian
    Mar 23 at 1:56













0












0








0








I am trying to manipulate a "test.jpg" image in Elixir by using Erlang wxImage library, but I am getting an error. I do not know how to convert the array/const output to a list so I can use it in Elixir.



Also I do not know why there is a clause function error when the syntax seems to be alright?



defmodule Imedit2 do
def readimg(image) do
:ok, _file = File.open("happy737.txt", [:write])
IO.puts("hi there")
_output =
image
|> File.read!()
|> :wxImage.getData()
|> to_charlist()

# IO.puts(is_list(output))
# IO.puts(is_tuple(output))
# IO.binwrite(file, output)
# File.close(file)
end
end


iex(58)> Imedit2.readimg("test.jpg")
hi there
** (FunctionClauseError) no function clause matching in :wxImage.getData/1

The following arguments were given to :wxImage.getData/1:

# 1
<<255, 216, 255, 226, 2, 28, 73, 67, 67, 95, 80, 82, 79, 70, 73, 76, 69, 0, 1,
1, 0, 0, 2, 12, 108, 99, 109, 115, 2, 16, 0, 0, 109, 110, 116, 114, 82, 71,
66, 32, 88, 89, 90, 32, 7, 220, 0, 1, 0, 25, ...>>

gen/wxImage.erl:405: :wxImage.getData/1
lib/imedit2.ex:5: Imedit2.readimg/1









share|improve this question
















I am trying to manipulate a "test.jpg" image in Elixir by using Erlang wxImage library, but I am getting an error. I do not know how to convert the array/const output to a list so I can use it in Elixir.



Also I do not know why there is a clause function error when the syntax seems to be alright?



defmodule Imedit2 do
def readimg(image) do
:ok, _file = File.open("happy737.txt", [:write])
IO.puts("hi there")
_output =
image
|> File.read!()
|> :wxImage.getData()
|> to_charlist()

# IO.puts(is_list(output))
# IO.puts(is_tuple(output))
# IO.binwrite(file, output)
# File.close(file)
end
end


iex(58)> Imedit2.readimg("test.jpg")
hi there
** (FunctionClauseError) no function clause matching in :wxImage.getData/1

The following arguments were given to :wxImage.getData/1:

# 1
<<255, 216, 255, 226, 2, 28, 73, 67, 67, 95, 80, 82, 79, 70, 73, 76, 69, 0, 1,
1, 0, 0, 2, 12, 108, 99, 109, 115, 2, 16, 0, 0, 109, 110, 116, 114, 82, 71,
66, 32, 88, 89, 90, 32, 7, 220, 0, 1, 0, 25, ...>>

gen/wxImage.erl:405: :wxImage.getData/1
lib/imedit2.ex:5: Imedit2.readimg/1






elixir wxerlang






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 24 at 4:43









Aleksei Matiushkin

85.6k95895




85.6k95895










asked Mar 23 at 1:02









Arto KalishianArto Kalishian

2817




2817












  • You are passing a binary into the function :wxImage.getData/1. If you look at the documentation for that function, it expects a reference to the image, not the images binary data. I have never used this library before, but it looks like you need to call :wxImage.loadFile/2,3,4 in order to load your image from a file. You will probably also need to call the new/0 function to first get a blank image reference.

    – Justin Wood
    Mar 23 at 1:19











  • I thought that File.read loads the image and that's why there is an output of numbers as a result of wximage processing the loaded image.

    – Arto Kalishian
    Mar 23 at 1:56

















  • You are passing a binary into the function :wxImage.getData/1. If you look at the documentation for that function, it expects a reference to the image, not the images binary data. I have never used this library before, but it looks like you need to call :wxImage.loadFile/2,3,4 in order to load your image from a file. You will probably also need to call the new/0 function to first get a blank image reference.

    – Justin Wood
    Mar 23 at 1:19











  • I thought that File.read loads the image and that's why there is an output of numbers as a result of wximage processing the loaded image.

    – Arto Kalishian
    Mar 23 at 1:56
















You are passing a binary into the function :wxImage.getData/1. If you look at the documentation for that function, it expects a reference to the image, not the images binary data. I have never used this library before, but it looks like you need to call :wxImage.loadFile/2,3,4 in order to load your image from a file. You will probably also need to call the new/0 function to first get a blank image reference.

– Justin Wood
Mar 23 at 1:19





You are passing a binary into the function :wxImage.getData/1. If you look at the documentation for that function, it expects a reference to the image, not the images binary data. I have never used this library before, but it looks like you need to call :wxImage.loadFile/2,3,4 in order to load your image from a file. You will probably also need to call the new/0 function to first get a blank image reference.

– Justin Wood
Mar 23 at 1:19













I thought that File.read loads the image and that's why there is an output of numbers as a result of wximage processing the loaded image.

– Arto Kalishian
Mar 23 at 1:56





I thought that File.read loads the image and that's why there is an output of numbers as a result of wximage processing the loaded image.

– Arto Kalishian
Mar 23 at 1:56












1 Answer
1






active

oldest

votes


















1
















I had a play around with :wxImage and I found a couple of problems with your code:



  1. You need to call :wx.new() to to initialize wx before any of the :wxImage functions will work.

  2. The argument togetData/1 should be the image handle, not the binary file data. From the docs:


wxImage()



An object reference, The representation is internal and can be changed without notice. It can't be used for comparsion stored on disc or distributed for use on other nodes.




And for getData/1:




getData(This) -> binary()



Types

This = wxImage()




So you can do it like this:



def readimg(image) do
:wx.new()

data =
image
|> String.to_charlist()
|> :wxImage.new()
|> :wxImage.getData()
|> :binary.bin_to_list()

:wx.destroy()
data
end


But beware that the bin_to_list/1 call is slow, and I don't think you need it anyway. You probably want to stop at :wxImage.new(), keep the handle in a variable, and use that to call whatever other :wxImage functions you need.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55309620%2fhow-to-convert-erlang-module-wximage-const-array-to-a-list-in-elixir%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1
















    I had a play around with :wxImage and I found a couple of problems with your code:



    1. You need to call :wx.new() to to initialize wx before any of the :wxImage functions will work.

    2. The argument togetData/1 should be the image handle, not the binary file data. From the docs:


    wxImage()



    An object reference, The representation is internal and can be changed without notice. It can't be used for comparsion stored on disc or distributed for use on other nodes.




    And for getData/1:




    getData(This) -> binary()



    Types

    This = wxImage()




    So you can do it like this:



    def readimg(image) do
    :wx.new()

    data =
    image
    |> String.to_charlist()
    |> :wxImage.new()
    |> :wxImage.getData()
    |> :binary.bin_to_list()

    :wx.destroy()
    data
    end


    But beware that the bin_to_list/1 call is slow, and I don't think you need it anyway. You probably want to stop at :wxImage.new(), keep the handle in a variable, and use that to call whatever other :wxImage functions you need.






    share|improve this answer





























      1
















      I had a play around with :wxImage and I found a couple of problems with your code:



      1. You need to call :wx.new() to to initialize wx before any of the :wxImage functions will work.

      2. The argument togetData/1 should be the image handle, not the binary file data. From the docs:


      wxImage()



      An object reference, The representation is internal and can be changed without notice. It can't be used for comparsion stored on disc or distributed for use on other nodes.




      And for getData/1:




      getData(This) -> binary()



      Types

      This = wxImage()




      So you can do it like this:



      def readimg(image) do
      :wx.new()

      data =
      image
      |> String.to_charlist()
      |> :wxImage.new()
      |> :wxImage.getData()
      |> :binary.bin_to_list()

      :wx.destroy()
      data
      end


      But beware that the bin_to_list/1 call is slow, and I don't think you need it anyway. You probably want to stop at :wxImage.new(), keep the handle in a variable, and use that to call whatever other :wxImage functions you need.






      share|improve this answer



























        1












        1








        1









        I had a play around with :wxImage and I found a couple of problems with your code:



        1. You need to call :wx.new() to to initialize wx before any of the :wxImage functions will work.

        2. The argument togetData/1 should be the image handle, not the binary file data. From the docs:


        wxImage()



        An object reference, The representation is internal and can be changed without notice. It can't be used for comparsion stored on disc or distributed for use on other nodes.




        And for getData/1:




        getData(This) -> binary()



        Types

        This = wxImage()




        So you can do it like this:



        def readimg(image) do
        :wx.new()

        data =
        image
        |> String.to_charlist()
        |> :wxImage.new()
        |> :wxImage.getData()
        |> :binary.bin_to_list()

        :wx.destroy()
        data
        end


        But beware that the bin_to_list/1 call is slow, and I don't think you need it anyway. You probably want to stop at :wxImage.new(), keep the handle in a variable, and use that to call whatever other :wxImage functions you need.






        share|improve this answer

















        I had a play around with :wxImage and I found a couple of problems with your code:



        1. You need to call :wx.new() to to initialize wx before any of the :wxImage functions will work.

        2. The argument togetData/1 should be the image handle, not the binary file data. From the docs:


        wxImage()



        An object reference, The representation is internal and can be changed without notice. It can't be used for comparsion stored on disc or distributed for use on other nodes.




        And for getData/1:




        getData(This) -> binary()



        Types

        This = wxImage()




        So you can do it like this:



        def readimg(image) do
        :wx.new()

        data =
        image
        |> String.to_charlist()
        |> :wxImage.new()
        |> :wxImage.getData()
        |> :binary.bin_to_list()

        :wx.destroy()
        data
        end


        But beware that the bin_to_list/1 call is slow, and I don't think you need it anyway. You probably want to stop at :wxImage.new(), keep the handle in a variable, and use that to call whatever other :wxImage functions you need.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Mar 23 at 4:02

























        answered Mar 23 at 3:53









        Adam MillerchipAdam Millerchip

        3,17311731




        3,17311731





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55309620%2fhow-to-convert-erlang-module-wximage-const-array-to-a-list-in-elixir%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

            Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript