@Override public void setRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.createImageData(width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int argb = rgbArray[dst + x]; pixelData.set(i++, (argb >> 16) & 255); pixelData.set(i++, (argb >> 8) & 255); pixelData.set(i++, (argb) & 255); pixelData.set(i++, (argb >> 24) & 255); } dst += scanSize; } ctx.putImageData(imageData, startX, startY); }
private String getColorAtPixel(final int x, final int y) { final int fixedX = Math.max(Math.min(x, 179), 0); final int fixedy = Math.max(Math.min(y, 179), 0); final Context2d ctx = canvas.getContext2d(); final ImageData imageData = ctx.getImageData(fixedX, fixedy, 1, 1); final CanvasPixelArray data = imageData.getData(); return Colors.rgb2html(new Rgb(data.get(0), data.get(1), data.get(2))); }
@Override public void setRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.createImageData(width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int argb = rgbArray[dst + x]; pixelData.set(i++, (argb >> 16) & 255); pixelData.set(i++, (argb >> 8) & 255); pixelData.set(i++, (argb) & 255); pixelData.set(i++, (argb >> 24) & 255); } dst += scanSize; } ctx.putImageData(imageData, startX, startY); }
@Override public void getRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { assert isReady() : "Cannot getRgb() a non-ready image"; if (canvas == null) { canvas = img.getOwnerDocument().createCanvasElement(); canvas.setHeight(img.getHeight()); canvas.setWidth(img.getWidth()); canvas.getContext2d().drawImage(img, 0, 0); // img.getOwnerDocument().getBody().appendChild(canvas); } Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.getImageData(startX, startY, width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int r = pixelData.get(i++); int g = pixelData.get(i++); int b = pixelData.get(i++); int a = pixelData.get(i++); rgbArray [dst + x] = a << 24 | r << 16 | g << 8 | b; } dst += scanSize; } }
@Override public void setRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { Context2d ctx = canvas.canvas().getContext2d(); ImageData imageData = ctx.createImageData(width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int argb = rgbArray[dst + x]; pixelData.set(i++, (argb >> 16) & 255); pixelData.set(i++, (argb >> 8) & 255); pixelData.set(i++, (argb) & 255); pixelData.set(i++, (argb >> 24) & 255); } dst += scanSize; } ctx.putImageData(imageData, startX, startY); } }
@Override public void getRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { assert isLoaded() : "Cannot getRgb() a non-ready image"; if (canvas == null) { canvas = img.getOwnerDocument().createCanvasElement(); canvas.setHeight(img.getHeight()); canvas.setWidth(img.getWidth()); canvas.getContext2d().drawImage(img, 0, 0); // img.getOwnerDocument().getBody().appendChild(canvas); } Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.getImageData(startX, startY, width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int r = pixelData.get(i++); int g = pixelData.get(i++); int b = pixelData.get(i++); int a = pixelData.get(i++); rgbArray [dst + x] = a << 24 | r << 16 | g << 8 | b; } dst += scanSize; } }
@Override public ImageData filter(ImageData source, boolean copy) { if (null == source) { return null; } final int length = ((source.getWidth() * source.getHeight()) * PIXEL_SZ); if (copy) { source = source.copy(); } final CanvasPixelArray data = source.getData(); if (null == data) { return source; } for (int i = 0; i < length; i += PIXEL_SZ) { int r = (int) Math.max(Math.min((data.get(i + R_OFFSET) + (m_r_brightness * 255) + 0.5), 255), 0); int g = (int) Math.max(Math.min((data.get(i + G_OFFSET) + (m_g_brightness * 255) + 0.5), 255), 0); int b = (int) Math.max(Math.min((data.get(i + B_OFFSET) + (m_b_brightness * 255) + 0.5), 255), 0); data.set(i + R_OFFSET, r); data.set(i + G_OFFSET, g); data.set(i + B_OFFSET, b); } return source; }
@Override public void getRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { assert isLoaded() : "Cannot getRgb() a non-ready image"; if (canvas == null) { canvas = img.getOwnerDocument().createCanvasElement(); canvas.setHeight(img.getHeight()); canvas.setWidth(img.getWidth()); canvas.getContext2d().drawImage(img, 0, 0); // img.getOwnerDocument().getBody().appendChild(canvas); } Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.getImageData(startX, startY, width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int r = pixelData.get(i++); int g = pixelData.get(i++); int b = pixelData.get(i++); int a = pixelData.get(i++); rgbArray [dst + x] = a << 24 | r << 16 | g << 8 | b; } dst += scanSize; } }
int r = (int) Math.max(Math.min((data.get(i + R_OFFSET) + (m_brightness * 255) + 0.5), 255), 0); int g = (int) Math.max(Math.min((data.get(i + G_OFFSET) + (m_brightness * 255) + 0.5), 255), 0); int b = (int) Math.max(Math.min((data.get(i + B_OFFSET) + (m_brightness * 255) + 0.5), 255), 0); data.set(i + R_OFFSET, r); data.set(i + G_OFFSET, g); data.set(i + B_OFFSET, b);
imagedata.getData().set( index , (int)(Math.sqrt( pixelColor.getR() ) * 255) ); imagedata.getData().set( index + 1 , (int)(Math.sqrt( pixelColor.getG() ) * 255) ); imagedata.getData().set( index + 2 , (int)(Math.sqrt( pixelColor.getB() ) * 255) ); imagedata.getData().set( index + 3 , 255 ); // alpha