Disable antialising when scaling images
Try this,
it's a fix for removing it in all browsers.
img {
image-rendering: optimizeSpeed; /* STOP SMOOTHING, GIVE ME SPEED */
image-rendering: -moz-crisp-edges; /* Firefox */
image-rendering: -o-crisp-edges; /* Opera */
image-rendering: -webkit-optimize-contrast; /* Chrome (and eventually Safari) */
image-rendering: pixelated; /* Chrome */
image-rendering: optimize-contrast; /* CSS3 Proposed */
-ms-interpolation-mode: nearest-neighbor; /* IE8+ */
}
Sources:
http://nullsleep.tumblr.com/post/16417178705/how-to-disable-image-smoothing-in-modern-web-browsers
http://updates.html5rocks.com/2015/01/pixelated
GitaarLAB
How to disable anti-aliasing when scaling up an imageview in android?
i hope its useful
Bitmap bmpSource = BitmapFactory.decodeResource(getResources(), SourceFileId);
//100 is dimension to resizing image size
//Passing filter = false will result in a blocky, pixellated image.
//Passing filter = true will give you smoother edges
Bitmap bmpScaled = Bitmap.createScaledBitmap(bmpSource, 100, 100, false);
ImageView img = (ImageView) findViewById(Your imageView Control Id);
img.setImageBitmap(bmpScaled);
is this what u want!?
Disable anti-aliasing on Android Imageview
There are multiple things that may be scaling your image with anti-aliasing.
One is BitmapFactory
. For example, if you have a drawable-mdpi
resource and the current resource configuration is xhdpi
, it will scale at decode time. You can provide options to avoid this, but the easiest way around it is to put these resources in drawable-nodpi
.
The canvas also scales the image with bilinear sampling by default. To avoid that, use a Paint
with .setFilterBitmap(false)
when drawing to the Canvas
. One way to do that is by using a custom Drawable
which wraps the underlying .draw()
call with a DrawFilter
modifying the desired paint flags.
public class AliasingDrawableWrapper extends DrawableWrapper {
private static final DrawFilter DRAW_FILTER =
new PaintFlagsDrawFilter(Paint.FILTER_BITMAP_FLAG, 0);
public AliasingDrawableWrapper(Drawable wrapped) {
super(wrapped);
}
@Override
public void draw(Canvas canvas) {
DrawFilter oldDrawFilter = canvas.getDrawFilter();
canvas.setDrawFilter(DRAW_FILTER);
super.draw(canvas);
canvas.setDrawFilter(oldDrawFilter);
}
}
imageView.setDrawable(new AliasingDrawableWrapper(getDrawable(R.drawable.bitmap)));
How to stretch images with no antialiasing
The Canvas documentation explicitly does not specify a scaling method - in my own tests it did indeed anti-alias the image quite badly in Firefox.
The code below copies pixel by pixel from a source image (which must be from the same Origin or from a Data URI) and scales it by the specified factor.
An extra off-screen canvas (src_canvas
) is required to receive the original source image, and its image data is then copied pixel by pixel into an on-screen canvas.
var img = new Image();
img.src = ...;
img.onload = function() {
var scale = 8;
var src_canvas = document.createElement('canvas');
src_canvas.width = this.width;
src_canvas.height = this.height;
var src_ctx = src_canvas.getContext('2d');
src_ctx.drawImage(this, 0, 0);
var src_data = src_ctx.getImageData(0, 0, this.width, this.height).data;
var dst_canvas = document.getElementById('canvas');
dst_canvas.width = this.width * scale;
dst_canvas.height = this.height * scale;
var dst_ctx = dst_canvas.getContext('2d');
var offset = 0;
for (var y = 0; y < this.height; ++y) {
for (var x = 0; x < this.width; ++x) {
var r = src_data[offset++];
var g = src_data[offset++];
var b = src_data[offset++];
var a = src_data[offset++] / 100.0;
dst_ctx.fillStyle = 'rgba(' + [r, g, b, a].join(',') + ')';
dst_ctx.fillRect(x * scale, y * scale, scale, scale);
}
}
};
Working demo at http://jsfiddle.net/alnitak/LwJJR/
EDIT a more optimal demo is available at http://jsfiddle.net/alnitak/j8YTe/ that also uses a raw image data array for the destination canvas.
Disabling antialiasing on a WPF image
As far as I know, WPF always does anti-aliasing when scaling a bitmap. However you should be able to accomplish your goal by avoiding the bitmap scaling.
There are two steps:
- Set
SnapsToDevicePixels="true"
on your image - Set a ScaleTransform on your image to scale it so that one device pixel = one bitmap pixel
To compute the needed ScaleTransform, compute your screen's DPI like this:
var DPI = Win32Functions.GetSystemMetrics(SM_CYICON) / SystemParameters.IconHeight * 96;
and then for the bitmap, do:
var scale = bitmapDPI / DPI;
var transform = new ScaleTransform(scale, scale);
This will cause your bitmap's pixels to exactly match with the device pixels. WPF will not stretch the bitmap, so there should be no anti-aliasing.
If you do want to stretch your image on high DPI screens but do so without anti-aliasing (eg double all pixels), just stretch the bitmap in your own code using whichever algorithm you like and use the above with the stretched bitmap.
UIImage ScaleToFit disable antialias?
Add the QuartzCore framework to your project, then set the image view’s layer
’s magnificationFilter
property to kCAFilterNearest
.
Related Topics
Is There Any "Font Smoothing" in Google Chrome
What Does Auto Do in Margin: 0 Auto
Css: Hover One Element, Effect For Multiple Elements
How to Insert a Line Break Before an Element Using Css
Css - Overflow: Scroll; - Always Show Vertical Scroll Bar
Passing Parameters to CSS Animation
How to Properly Display an Iframe in Mobile Safari
Invalid CSS Selector Causes Rule to Be Dropped: What Is the Rationale
Search Input With an Icon Bootstrap
How to Make Generated Content Selectable
Twitter Bootstrap - Add Top Space Between Rows
Webkit Bug with ':Hover' and Multiple Adjacent-Sibling Selectors
Bootstrap 4 - Navbar Items Outside the Collapse
How to Override the Properties of a CSS Class Using Another CSS Class