Coder Social home page Coder Social logo

Comments (10)

fireddd avatar fireddd commented on July 20, 2024

Hi Noel,
Is this what is needed here??
https://stackoverflow.com/questions/13605248/java-converting-image-to-bufferedimage

from doodle.

noelwelsh avatar noelwelsh commented on July 20, 2024

That's not really the issue. This is about having a way to convert the Picture type in Doodle into a BufferedImage. All the code already exists, it just needs to presented in a stable API.

from doodle.

jCabala avatar jCabala commented on July 20, 2024

I have one question about the end result. After the succesful implementation we want to be able to do something like:

val picture = circle(100)
val bi = picture.fromPicture

where bi is a BufferedImage or we want this function to evaluate the picture as well and get something like:

val picture = circle(100)
val (res, bi) = picture.fromPicture

Another possibility is to have a method .bufferedImage on picture that converts to the BufferedImage since there is such a method for the base64

from doodle.

noelwelsh avatar noelwelsh commented on July 20, 2024

The closest equivalent is the Base64 effect.

I think the following is probably what is needed:

  1. An effect with a single method
def bufferedImage[A](picture: Picture[Alg, A]): IO[(A, BufferedImage)]
  1. Syntax to make it easier to use.

  2. An implementation for the Java2D backend. (Code already exists to do this conversion. It just needs to be exposed in this API.)

from doodle.

jCabala avatar jCabala commented on July 20, 2024

The function renderBufferedImage() takes more arguments than just a picture:
image

Should we also make the user to specify those arguments in the effect? Also this function returns the IO with the types inside in a different order than the base64 function does:
image

Is that intended and should the effect also return this in that order?

from doodle.

noelwelsh avatar noelwelsh commented on July 20, 2024

Yes, I think you're right. The parameters to renderBufferedImage are essentially the elements of Frame. So I think the correct signature is

def bufferedImage[A](frame: Frame, picture: Picture[Alg, A]): IO[(A, BufferedImage)]

The different order of types is just an accident. The external APIs should be as consistent as possible, and hence should follow the precedent in base64.

from doodle.

jCabala avatar jCabala commented on July 20, 2024

Does the binary compatibillity check failing mean that I cannot make the Java2dWriter extend the BufferedImageConverter and should create a separate class for that?

from doodle.

noelwelsh avatar noelwelsh commented on July 20, 2024

You can ignore binary compatibility issues. If you bump the base version defined in build.sbt the problem will go away.

from doodle.

jCabala avatar jCabala commented on July 20, 2024

I made everything specific for java2d backend but now I started thinking that maybe the approach of making the converter generic with respect to the bitmap is better as other backends might have their own bitmap classes and that could be helpful for example if we want draw pixels on the screen or do the convolutions (#94)

from doodle.

noelwelsh avatar noelwelsh commented on July 20, 2024

I made everything specific for java2d backend but now I started thinking that maybe the approach of making the converter generic with respect to the bitmap is better as other backends might have their own bitmap classes and that could be helpful for example if we want draw pixels on the screen or do the convolutions (#94)

Agreed with this. To avoid scope creep I opened another issue (#145) that includes this.

from doodle.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.