We simply haven't implemented this yet:
https://javafx-jira.kenai.com/browse/RT-28629
...jim
On 8/26/14 3:29 PM, Felipe Heidrich wrote:
I'm curious. Why setSmooth doesn't work?
I tried setSmooth but it doesn’t work.
See the doc: "Indicates whether to use a better quality filtering algorithm or
a faster”.
I expected this be a set for the interpolation algorithm (bilinear, bicubic,
nearest neighbor, etc).
My case I didn’t want a faster filter, I wanted no filter.
Anyway, looking at the code, at the rendering level, NSImageView:
// RT-18701: this method does nothing
public void setSmooth(boolean s) {}
Also, do I really need to create an image in memory just to render something
showing the pixels?
For a workaround done outside JavaFX I can’t think of any other way.
I used this code snippet for a simple testing app, small images.
Felipe
On Aug 27, 2014 3:32 AM, "Nico Krebs | www.mensch-und-maschine.de
<http://www.mensch-und-maschine.de/>" <[email protected]
<mailto:[email protected]>> wrote:
Thanx for that quick response!
It is the right direction, but doing this for one image is not enough.
when having multiple images, the distances between them must be scaled,
too.
I will extend your example to scale all nodes and their positions, too.
I try it tomorrow and post the result here.
Nico
Felipe Heidrich <mailto:[email protected]
<mailto:[email protected]>>
26. August 2014 19:20
Hi Nico,
Is this what you looking for:
Image image - the image to scale up
int width = (int)image.getWidth();
int height = (int)image.getHeight();
int z = (int)getZoom(); // 2, 4, 8, 16 (I only tested for powers of two)
IntBuffer src = IntBuffer.allocate(width * height);
WritablePixelFormat<IntBuffer> pf =
PixelFormat.getIntArgbInstance();
image.getPixelReader().getPixels(0, 0, width, height, pf, src,
width);
int newWidth = width * z;
int newHeight = height * z;
int[] dst = new int[newWidth * newHeight];
int index = 0;
for (int y = 0; y < height; y++) {
index = y * newWidth * z;
for (int x = 0; x < width; x++) {
int pixel = src.get();
for (int i = 0; i < z; i++) {
for (int j = 0; j < z; j++) {
dst[index + i + (newWidth * j)] = pixel;
}
}
index += z;
}
}
WritableImage bigImage = new WritableImage(newWidth, newHeight);
bigImage.getPixelWriter().setPixels(0, 0, newWidth,
newHeight, pf, dst, 0, newWidth);
preview.setImage(bigImage);
preview.setFitWidth(newWidth);
preview is ImageView where the scale up image is displayed.
Felipe
--
Nico Krebs
Michelangelostraße 1
01217 Dresden
web: www.mensch-und-maschine.de <http://www.mensch-und-maschine.de/>
mobil: 0162 / 85 89 667
mail: [email protected] <mailto:[email protected]>
skype: k-dottus
icq: 324 143 104
fax: 032 12 - 11 39 77 6
twitter: nico_krebs