Java tutorial
//package com.java2s; /* * The MIT License Copyright (c) 2014 Krayushkin Konstantin (jangokvk@gmail.com) * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and * associated documentation files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import android.graphics.BitmapFactory; import android.graphics.Point; public class Main { /** * Maximum texture size, witch Android could handle. That is, maximum {@link android.graphics.Bitmap} * size, witch won't through {@link java.lang.OutOfMemoryError}. * <br /><br /> * <p/> * Actually maximum texture size for now is 2048x2048, but here was chosen 2000x2000 * just in case. */ public static final int MAX_TEXTURE_SIZE = 2000; /** * Checks, if the passed image's dimensions are greater, than acceptable. * * @param data raw (not decoded) image data as byte array * @see #MAX_TEXTURE_SIZE */ public static boolean isTooBig(byte[] data) { final Point size = extractSize(data); return (size.x >= MAX_TEXTURE_SIZE || size.y >= MAX_TEXTURE_SIZE); } /** * Looks through the byte array and calculates size of the picture inside it. Operation is very * fast, as no actual decoding will be done. */ public static Point extractSize(byte[] data) { final BitmapFactory.Options ops = new BitmapFactory.Options(); ops.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(data, 0, data.length, ops); return new Point(ops.outWidth, ops.outHeight); } }