android.graphics.BitmapFactory.Options Java Examples

The following examples show how to use android.graphics.BitmapFactory.Options. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: NikonGetLiveViewImageCommand.java    From remoteyourcam-usb with Apache License 2.0 6 votes vote down vote up
public NikonGetLiveViewImageCommand(NikonCamera camera, LiveViewData data) {
    super(camera);
    this.data = data;
    if (data == null) {
        this.data = new LiveViewData();
        //this.data.histogram = ByteBuffer.allocate(1024 * 4);
        //this.data.histogram.order(ByteOrder.LITTLE_ENDIAN);
    } else {
        this.data = data;
    }
    options = new BitmapFactory.Options();
    options.inBitmap = this.data.bitmap;
    options.inSampleSize = 1;
    options.inTempStorage = tmpStorage;
    this.data.bitmap = null;
}
 
Example #2
Source File: ImageUtils.java    From monolog-android with MIT License 6 votes vote down vote up
/**
 * 获取图片缩略�? 只有Android2.1以上版本支持
 *
 * @param imgName
 * @param kind    MediaStore.Images.Thumbnails.MICRO_KIND
 * @return
 */
@SuppressWarnings("deprecation")
public static Bitmap loadImgThumbnail(Activity context, String imgName,
                                      int kind) {
    Bitmap bitmap = null;

    String[] proj = {MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DISPLAY_NAME};

    Cursor cursor = context.managedQuery(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj,
            MediaStore.Images.Media.DISPLAY_NAME + "='" + imgName + "'",
            null, null);

    if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) {
        ContentResolver crThumb = context.getContentResolver();
        Options options = new Options();
        options.inSampleSize = 1;
        bitmap = getThumbnail(crThumb, cursor.getInt(0),
                kind, options);
    }
    return bitmap;
}
 
Example #3
Source File: BaseImageDecoder.java    From mobile-manager-tool with MIT License 6 votes vote down vote up
/**
 * Decodes image from URI into {@link android.graphics.Bitmap}. Image is scaled close to incoming {@linkplain com.nostra13.universalimageloader.core.assist.ImageSize target size}
 * during decoding (depend on incoming parameters).
 *
 * @param decodingInfo Needed data for decoding image
 * @return Decoded bitmap
 * @throws java.io.IOException                   if some I/O exception occurs during image reading
 * @throws UnsupportedOperationException if image URI has unsupported scheme(protocol)
 */
@Override
public Bitmap decode(ImageDecodingInfo decodingInfo) throws IOException {
	Bitmap decodedBitmap;
	ImageFileInfo imageInfo;

	InputStream imageStream = getImageStream(decodingInfo);
	try {
		imageInfo = defineImageSizeAndRotation(imageStream, decodingInfo);
		imageStream = resetStream(imageStream, decodingInfo);
		Options decodingOptions = prepareDecodingOptions(imageInfo.imageSize, decodingInfo);
		decodedBitmap = BitmapFactory.decodeStream(imageStream, null, decodingOptions);
	} finally {
		IoUtils.closeSilently(imageStream);
	}

	if (decodedBitmap == null) {
		L.e(ERROR_CANT_DECODE_IMAGE, decodingInfo.getImageKey());
	} else {
		decodedBitmap = considerExactScaleAndOrientatiton(decodedBitmap, decodingInfo, imageInfo.exif.rotation,
				imageInfo.exif.flipHorizontal);
	}
	return decodedBitmap;
}
 
Example #4
Source File: ImageUtils.java    From monolog-android with MIT License 6 votes vote down vote up
/**
 * 创建缩略�?
 *
 * @param context
 * @param largeImagePath 原始大图路径
 * @param thumbfilePath  输出缩略图路�?
 * @param square_size    输出图片宽度
 * @param quality        输出图片质量
 * @throws IOException
 */
public static void createImageThumbnail(Context context, String largeImagePath, String thumbfilePath, int square_size, int quality) throws IOException {
    Options opts = new Options();
    opts.inSampleSize = 1;
    // 原始图片bitmap
    Bitmap cur_bitmap = getBitmapByPath(largeImagePath, opts);

    if (cur_bitmap == null)
        throw new IOException();

    // 原始图片的高�?
    int[] cur_img_size = new int[]{cur_bitmap.getWidth(),
            cur_bitmap.getHeight()};
    // 计算原始图片缩放后的宽高
    int[] new_img_size = scaleImageSize(cur_img_size, square_size);
    // 生成缩放后的bitmap
    Bitmap thb_bitmap = zoomBitmap(cur_bitmap, new_img_size[0],
            new_img_size[1]);
    // 生成缩放后的图片文件
    saveImageToSD(context, thumbfilePath, thb_bitmap, quality);
}
 
Example #5
Source File: BitmapUtil.java    From videocreator with Apache License 2.0 6 votes vote down vote up
/**
 * 计算缩放比例
 *
 * @param opts
 * @param reqWidth
 * @param reqHeight
 * @return
 */
private static int calculateInSampleSize(Options opts, int reqWidth,
                                         int reqHeight) {
    if (opts == null) return 1;

    int inSampleSize = 1;
    int realWidth = opts.outWidth;
    int realHeight = opts.outHeight;

    if (realHeight > reqHeight || realWidth > reqWidth) {
        int widthRatio = realWidth / reqWidth;
        int heightRatio = realHeight / reqHeight;

        inSampleSize = (heightRatio > widthRatio) ? widthRatio : heightRatio;
    }
    return inSampleSize;
}
 
Example #6
Source File: AnimationsContainer.java    From FimiX8-RE with MIT License 6 votes vote down vote up
public FramesSequenceAnimation(ImageView imageView, int[] frames, int fps) {
    this.mFrames = frames;
    this.mIndex = -1;
    this.mSoftReferenceImageView = new SoftReference(imageView);
    this.mShouldRun = false;
    this.mIsRunning = false;
    this.mDelayMillis = 100;
    imageView.setImageResource(this.mFrames[0]);
    if (VERSION.SDK_INT >= 11) {
        Bitmap bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
        this.mBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
        this.mBitmapOptions = new Options();
        this.mBitmapOptions.inBitmap = this.mBitmap;
        this.mBitmapOptions.inMutable = true;
        this.mBitmapOptions.inSampleSize = 1;
        this.mBitmapOptions.inPreferredConfig = Config.RGB_565;
    }
}
 
Example #7
Source File: ImageUtils.java    From monolog-android with MIT License 6 votes vote down vote up
public static boolean isThisBitmapTooLargeToRead(String path) {

        File file = new File(path);

        if (!file.exists()) {
            return false;
        }

        final Options options = new Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path, options);
        int width = options.outWidth;
        int height = options.outHeight;
        if (width == -1 || height == -1) {
            return false;
        }

        if (width > getBitmapMaxWidthAndMaxHeight()
                || height > getBitmapMaxWidthAndMaxHeight()) {
            return true;
        } else {
            return false;
        }

    }
 
Example #8
Source File: ImageSizeUtil.java    From LLApp with Apache License 2.0 6 votes vote down vote up
/**
 * 根据需求的宽和高以及图片实际的宽和高计算SampleSize
 * 
 * @param options
 * @param reqWidth
 * @param reqHeight
 * @return
 */
public static int caculateInSampleSize(Options options, int reqWidth,
		int reqHeight)
{
	int width = options.outWidth;
	int height = options.outHeight;

	int inSampleSize = 1;

	if (width > reqWidth || height > reqHeight)
	{
		int widthRadio = Math.round(width * 1.0f / reqWidth);
		int heightRadio = Math.round(height * 1.0f / reqHeight);

		inSampleSize = Math.max(widthRadio, heightRadio);
	}

	return inSampleSize;
}
 
Example #9
Source File: BaseImageDecoder.java    From candybar with Apache License 2.0 6 votes vote down vote up
protected Options prepareDecodingOptions(ImageSize imageSize, ImageDecodingInfo decodingInfo) {
    ImageScaleType scaleType = decodingInfo.getImageScaleType();
    int scale;
    if (scaleType == ImageScaleType.NONE) {
        scale = 1;
    } else if (scaleType == ImageScaleType.NONE_SAFE) {
        scale = ImageSizeUtils.computeMinImageSampleSize(imageSize);
    } else {
        ImageSize targetSize = decodingInfo.getTargetSize();
        boolean powerOf2 = scaleType == ImageScaleType.IN_SAMPLE_POWER_OF_2;
        scale = ImageSizeUtils.computeImageSampleSize(imageSize, targetSize, decodingInfo.getViewScaleType(), powerOf2);
    }
    if (scale > 1 && loggingEnabled) {
        L.d(LOG_SUBSAMPLE_IMAGE, imageSize, imageSize.scaleDown(scale), scale, decodingInfo.getImageKey());
    }

    Options decodingOptions = decodingInfo.getDecodingOptions();
    decodingOptions.inSampleSize = scale;
    return decodingOptions;
}
 
Example #10
Source File: BaseImageDecoder.java    From mobile-manager-tool with MIT License 6 votes vote down vote up
protected Options prepareDecodingOptions(ImageSize imageSize, ImageDecodingInfo decodingInfo) {
	ImageScaleType scaleType = decodingInfo.getImageScaleType();
	int scale;
	if (scaleType == ImageScaleType.NONE) {
		scale = 1;
	} else if (scaleType == ImageScaleType.NONE_SAFE) {
		scale = ImageSizeUtils.computeMinImageSampleSize(imageSize);
	} else {
		ImageSize targetSize = decodingInfo.getTargetSize();
		boolean powerOf2 = scaleType == ImageScaleType.IN_SAMPLE_POWER_OF_2;
		scale = ImageSizeUtils.computeImageSampleSize(imageSize, targetSize, decodingInfo.getViewScaleType(), powerOf2);
	}
	if (scale > 1 && loggingEnabled) {
		L.d(LOG_SUBSAMPLE_IMAGE, imageSize, imageSize.scaleDown(scale), scale, decodingInfo.getImageKey());
	}

	Options decodingOptions = decodingInfo.getDecodingOptions();
	decodingOptions.inSampleSize = scale;
	return decodingOptions;
}
 
Example #11
Source File: BitmapUtils.java    From Cirrus_depricated with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Calculates a proper value for options.inSampleSize in order to decode a Bitmap minimizing 
 * the memory overload and covering a target surface of reqWidth x reqHeight if the original
 * image is big enough. 
 * 
 * @param options       Bitmap decoding options; options.outHeight and options.inHeight should
 *                      be set. 
 * @param reqWidth      Width of the surface where the Bitmap will be drawn on, in pixels.
 * @param reqHeight     Height of the surface where the Bitmap will be drawn on, in pixels.
 * @return              The largest inSampleSize value that is a power of 2 and keeps both
 *                      height and width larger than reqWidth and reqHeight.
 */
private static int calculateSampleFactor(Options options, int reqWidth, int reqHeight) {
    
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {
        final int halfHeight = height / 2;
        final int halfWidth = width / 2;

        // calculates the largest inSampleSize value (for smallest sample) that is a power of 2 and keeps both
        // height and width **larger** than the requested height and width.
        while ((halfHeight / inSampleSize) > reqHeight
                && (halfWidth / inSampleSize) > reqWidth) {
            inSampleSize *= 2;
        }
    }
    
    return inSampleSize;
}
 
Example #12
Source File: BaseImageDecoder.java    From BigApp_WordPress_Android with Apache License 2.0 6 votes vote down vote up
protected Options prepareDecodingOptions(ImageSize imageSize, ImageDecodingInfo decodingInfo) {
    ImageScaleType scaleType = decodingInfo.getImageScaleType();
    int scale;
    if (scaleType == ImageScaleType.NONE) {
        scale = 1;
    } else if (scaleType == ImageScaleType.NONE_SAFE) {
        scale = ImageSizeUtils.computeMinImageSampleSize(imageSize);
    } else {
        ImageSize targetSize = decodingInfo.getTargetSize();
        boolean powerOf2 = scaleType == ImageScaleType.IN_SAMPLE_POWER_OF_2;
        scale = ImageSizeUtils.computeImageSampleSize(imageSize, targetSize, decodingInfo.getViewScaleType(), powerOf2);
    }
    if (scale > 1 && loggingEnabled) {
        L.d(LOG_SUBSAMPLE_IMAGE, imageSize, imageSize.scaleDown(scale), scale, decodingInfo.getImageKey());
    }

    Options decodingOptions = decodingInfo.getDecodingOptions();
    decodingOptions.inSampleSize = scale;
    return decodingOptions;
}
 
Example #13
Source File: EmojiUtil.java    From XMPPSample_Studio with Apache License 2.0 6 votes vote down vote up
private EmojiUtil(Context context) {
	this.context = context;
	density = context.getResources().getDisplayMetrics().density;
	try {
		if (density >= 1.5f) {
			this.isHdpi = true;
			InputStream localInputStream = context.getAssets().open("emoji/emoji_2x.png");
			Options opts = new Options();
			opts.inPurgeable = true;
			opts.inInputShareable = true;
			emojiImages = BitmapFactory.decodeStream(localInputStream, null, opts);
		}
		String[] index = EMOJI_INDEX.split("\n");
		emojiRects = new HashMap<String, Rect>();
		emojiDrawables = new HashMap<String, SoftReference<Drawable>>();
		for (int i = 0; i < index.length; i++) {
			String[] emojis = index[i].split("-");
			for (int j = 0; j < emojis.length; j++) {
				emojiRects.put(emojis[j], new Rect(j * 40, i * 40, 40 * (j + 1), 40 * (i + 1)));
			}
		}
	} catch (IOException localIOException) {

	}
}
 
Example #14
Source File: ImageDecodingInfo.java    From WliveTV with Apache License 2.0 6 votes vote down vote up
public ImageDecodingInfo(String imageKey, String imageUri, String originalImageUri, ImageSize targetSize, ViewScaleType viewScaleType,
						 ImageDownloader downloader, DisplayImageOptions displayOptions) {
	this.imageKey = imageKey;
	this.imageUri = imageUri;
	this.originalImageUri = originalImageUri;
	this.targetSize = targetSize;

	this.imageScaleType = displayOptions.getImageScaleType();
	this.viewScaleType = viewScaleType;

	this.downloader = downloader;
	this.extraForDownloader = displayOptions.getExtraForDownloader();

	considerExifParams = displayOptions.isConsiderExifParams();
	decodingOptions = new Options();
	copyOptions(displayOptions.getDecodingOptions(), decodingOptions);
}
 
Example #15
Source File: ImageDecodingInfo.java    From BigApp_WordPress_Android with Apache License 2.0 6 votes vote down vote up
public ImageDecodingInfo(String imageKey, String imageUri, String originalImageUri, ImageSize targetSize, ViewScaleType viewScaleType,
						 ImageDownloader downloader, DisplayImageOptions displayOptions) {
	this.imageKey = imageKey;
	this.imageUri = imageUri;
	this.originalImageUri = originalImageUri;
	this.targetSize = targetSize;

	this.imageScaleType = displayOptions.getImageScaleType();
	this.viewScaleType = viewScaleType;

	this.downloader = downloader;
	this.extraForDownloader = displayOptions.getExtraForDownloader();

	considerExifParams = displayOptions.isConsiderExifParams();
	decodingOptions = new Options();
	copyOptions(displayOptions.getDecodingOptions(), decodingOptions);
}
 
Example #16
Source File: AccelerometerPlayActivity.java    From android-AccelerometerPlay with Apache License 2.0 6 votes vote down vote up
public SimulationView(Context context) {
    super(context);
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    mXDpi = metrics.xdpi;
    mYDpi = metrics.ydpi;
    mMetersToPixelsX = mXDpi / 0.0254f;
    mMetersToPixelsY = mYDpi / 0.0254f;

    // rescale the ball so it's about 0.5 cm on screen
    mDstWidth = (int) (sBallDiameter * mMetersToPixelsX + 0.5f);
    mDstHeight = (int) (sBallDiameter * mMetersToPixelsY + 0.5f);
    mParticleSystem = new ParticleSystem();

    Options opts = new Options();
    opts.inDither = true;
    opts.inPreferredConfig = Bitmap.Config.RGB_565;
}
 
Example #17
Source File: DisplayImageOptions.java    From letv with Apache License 2.0 6 votes vote down vote up
public Builder() {
    this.imageResOnLoading = 0;
    this.imageResForEmptyUri = 0;
    this.imageResOnFail = 0;
    this.imageOnLoading = null;
    this.imageForEmptyUri = null;
    this.imageOnFail = null;
    this.resetViewBeforeLoading = false;
    this.cacheInMemory = false;
    this.cacheOnDisk = false;
    this.imageScaleType = ImageScaleType.IN_SAMPLE_POWER_OF_2;
    this.decodingOptions = new Options();
    this.delayBeforeLoading = 0;
    this.considerExifParams = false;
    this.extraForDownloader = null;
    this.preProcessor = null;
    this.postProcessor = null;
    this.displayer = DefaultConfigurationFactory.createBitmapDisplayer();
    this.handler = null;
    this.isSyncLoading = false;
    this.decodingOptions.inPurgeable = true;
    this.decodingOptions.inInputShareable = true;
}
 
Example #18
Source File: ImageDecodingInfo.java    From letv with Apache License 2.0 6 votes vote down vote up
private void copyOptions(Options srcOptions, Options destOptions) {
    destOptions.inDensity = srcOptions.inDensity;
    destOptions.inDither = srcOptions.inDither;
    destOptions.inInputShareable = srcOptions.inInputShareable;
    destOptions.inJustDecodeBounds = srcOptions.inJustDecodeBounds;
    destOptions.inPreferredConfig = srcOptions.inPreferredConfig;
    destOptions.inPurgeable = srcOptions.inPurgeable;
    destOptions.inSampleSize = srcOptions.inSampleSize;
    destOptions.inScaled = srcOptions.inScaled;
    destOptions.inScreenDensity = srcOptions.inScreenDensity;
    destOptions.inTargetDensity = srcOptions.inTargetDensity;
    destOptions.inTempStorage = srcOptions.inTempStorage;
    if (VERSION.SDK_INT >= 10) {
        copyOptions10(srcOptions, destOptions);
    }
    if (VERSION.SDK_INT >= 11) {
        copyOptions11(srcOptions, destOptions);
    }
}
 
Example #19
Source File: BaseImageDecoder.java    From letv with Apache License 2.0 6 votes vote down vote up
protected Options prepareDecodingOptions(ImageSize imageSize, ImageDecodingInfo decodingInfo) {
    int scale;
    ImageScaleType scaleType = decodingInfo.getImageScaleType();
    if (scaleType == ImageScaleType.NONE) {
        scale = 1;
    } else if (scaleType == ImageScaleType.NONE_SAFE) {
        scale = ImageSizeUtils.computeMinImageSampleSize(imageSize);
    } else {
        boolean powerOf2;
        ImageSize targetSize = decodingInfo.getTargetSize();
        if (scaleType == ImageScaleType.IN_SAMPLE_POWER_OF_2) {
            powerOf2 = true;
        } else {
            powerOf2 = false;
        }
        scale = ImageSizeUtils.computeImageSampleSize(imageSize, targetSize, decodingInfo.getViewScaleType(), powerOf2);
    }
    if (scale > 1 && this.loggingEnabled) {
        L.d(LOG_SUBSAMPLE_IMAGE, imageSize, imageSize.scaleDown(scale), Integer.valueOf(scale), decodingInfo.getImageKey());
    }
    Options decodingOptions = decodingInfo.getDecodingOptions();
    decodingOptions.inSampleSize = scale;
    return decodingOptions;
}
 
Example #20
Source File: BitmapUtils.java    From BigApp_Discuz_Android with Apache License 2.0 6 votes vote down vote up
/**
 * 计算文件大小
 *
 * @param options
 * @param minSideLength
 * @param maxNumOfPixels
 * @return
 */
public static int computeSampleSize(BitmapFactory.Options options,
                                    int minSideLength, int maxNumOfPixels) {
    int initialSize = computeInitialSampleSize(options, minSideLength,
            maxNumOfPixels);

    int roundedSize;
    if (initialSize <= 8) {
        roundedSize = 1;
        while (roundedSize < initialSize) {
            roundedSize <<= 1;
        }
    } else {
        roundedSize = (initialSize + 7) / 8 * 8;
    }

    return roundedSize;
}
 
Example #21
Source File: GameView.java    From CatVision-io-SDK-Android with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
private Bitmap getResBitmap(int bmpResId) {
	Options opts = new Options();
	opts.inDither = false;

	Resources res = getResources();
	Bitmap bmp = BitmapFactory.decodeResource(res, bmpResId, opts);

	if (bmp == null && isInEditMode()) {
		// BitmapFactory.decodeResource doesn't work from the rendering
		// library in Eclipse's Graphical Layout Editor. Use this workaround instead.

		Drawable d = res.getDrawable(bmpResId);
		int w = d.getIntrinsicWidth();
		int h = d.getIntrinsicHeight();
		bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
		Canvas c = new Canvas(bmp);
		d.setBounds(0, 0, w - 1, h - 1);
		d.draw(c);
	}

	return bmp;
}
 
Example #22
Source File: MusicUtil.java    From AirFree-Client with GNU General Public License v3.0 6 votes vote down vote up
public static int computeSampleSize(Options options, int target) {
    int w = options.outWidth;
    int h = options.outHeight;
    int candidateW = w / target;
    int candidateH = h / target;
    int candidate = Math.max(candidateW, candidateH);
    if (candidate == 0) {
        return 1;
    }
    if (candidate > 1) {
        if ((w > target) && (w / candidate) < target) {
            candidate -= 1;
        }
    }
    if (candidate > 1) {
        if ((h > target) && (h / candidate) < target) {
            candidate -= 1;
        }
    }
    return candidate;
}
 
Example #23
Source File: ImageDecodingInfo.java    From mobile-manager-tool with MIT License 6 votes vote down vote up
public ImageDecodingInfo(String imageKey, String imageUri, String originalImageUri, ImageSize targetSize, ViewScaleType viewScaleType,
						 ImageDownloader downloader, DisplayImageOptions displayOptions) {
	this.imageKey = imageKey;
	this.imageUri = imageUri;
	this.originalImageUri = originalImageUri;
	this.targetSize = targetSize;

	this.imageScaleType = displayOptions.getImageScaleType();
	this.viewScaleType = viewScaleType;

	this.downloader = downloader;
	this.extraForDownloader = displayOptions.getExtraForDownloader();

	considerExifParams = displayOptions.isConsiderExifParams();
	decodingOptions = new Options();
	copyOptions(displayOptions.getDecodingOptions(), decodingOptions);
}
 
Example #24
Source File: IconRequest.java    From letv with Apache License 2.0 6 votes vote down vote up
public static IconRequest build(Context context, String iconHash) {
    if (iconHash == null) {
        return null;
    }
    try {
        int iconId = CommonUtils.getAppIconResourceId(context);
        Fabric.getLogger().d(Fabric.TAG, "App icon resource ID is " + iconId);
        Options options = new Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(context.getResources(), iconId, options);
        return new IconRequest(iconHash, iconId, options.outWidth, options.outHeight);
    } catch (Exception e) {
        Fabric.getLogger().e(Fabric.TAG, "Failed to load icon", e);
        return null;
    }
}
 
Example #25
Source File: BitmapUtils.java    From BigApp_Discuz_Android with Apache License 2.0 6 votes vote down vote up
/**
 * 计算文件大小
 *
 * @param options
 * @param minSideLength
 * @param maxNumOfPixels
 * @return
 */
private static int computeInitialSampleSize(BitmapFactory.Options options,
                                            int minSideLength, int maxNumOfPixels) {
    double w = options.outWidth;
    double h = options.outHeight;

    int lowerBound = (maxNumOfPixels == -1) ? 1 : (int) Math.ceil(Math
            .sqrt(w * h / maxNumOfPixels));
    int upperBound = (minSideLength == -1) ? 128 : (int) Math.min(Math
            .floor(w / minSideLength), Math.floor(h / minSideLength));

    if (upperBound < lowerBound) {
        // return the larger one when there is no overlapping zone.
        return lowerBound;
    }

    if ((maxNumOfPixels == -1) && (minSideLength == -1)) {
        return 1;
    } else if (minSideLength == -1) {
        return lowerBound;
    } else {
        return upperBound;
    }
}
 
Example #26
Source File: FileUtils.java    From letv with Apache License 2.0 6 votes vote down vote up
public static Bitmap getBitmapByPath(String filename) {
    if (!checkFileIsEnabledPath(filename)) {
        return null;
    }
    Options newOpts = new Options();
    newOpts.inJustDecodeBounds = true;
    Bitmap bitmap = BitmapFactory.decodeFile(filename, newOpts);
    int w = newOpts.outWidth;
    int h = newOpts.outHeight;
    if (bitmap != null) {
        bitmap.recycle();
    }
    int be = 1;
    if (w > h && ((float) w) > 300.0f) {
        be = (int) (((float) newOpts.outWidth) / 300.0f);
    } else if (w < h && ((float) h) > 400.0f) {
        be = (int) (((float) newOpts.outHeight) / 400.0f);
    }
    if (be <= 0) {
        be = 1;
    }
    Options newOpts2 = new Options();
    newOpts2.inSampleSize = be;
    newOpts2.inJustDecodeBounds = false;
    return BitmapFactory.decodeFile(filename, newOpts2);
}
 
Example #27
Source File: ImageActivity.java    From letv with Apache License 2.0 6 votes vote down vote up
private Bitmap a(String str) throws IOException {
    int i = 1;
    Options options = new Options();
    options.inJustDecodeBounds = true;
    Uri parse = Uri.parse(str);
    InputStream openInputStream = getContentResolver().openInputStream(parse);
    if (openInputStream == null) {
        return null;
    }
    BitmapFactory.decodeStream(openInputStream, null, options);
    openInputStream.close();
    int i2 = options.outWidth;
    int i3 = options.outHeight;
    while (i2 * i3 > 4194304) {
        i2 /= 2;
        i3 /= 2;
        i *= 2;
    }
    options.inJustDecodeBounds = false;
    options.inSampleSize = i;
    return BitmapFactory.decodeStream(getContentResolver().openInputStream(parse), null, options);
}
 
Example #28
Source File: FileUtils.java    From letv with Apache License 2.0 6 votes vote down vote up
private static int computeInitialSampleSize(Options options, int minSideLength, int maxNumOfPixels) {
    double w = (double) options.outWidth;
    double h = (double) options.outHeight;
    int lowerBound = maxNumOfPixels == -1 ? 1 : (int) Math.ceil(Math.sqrt((w * h) / ((double) maxNumOfPixels)));
    int upperBound = minSideLength == -1 ? 128 : (int) Math.min(Math.floor(w / ((double) minSideLength)), Math.floor(h / ((double) minSideLength)));
    if (upperBound < lowerBound) {
        return lowerBound;
    }
    if (maxNumOfPixels == -1 && minSideLength == -1) {
        return 1;
    }
    if (minSideLength != -1) {
        return upperBound;
    }
    return lowerBound;
}
 
Example #29
Source File: a.java    From letv with Apache License 2.0 6 votes vote down vote up
private static final boolean b(String str, int i, int i2) {
    if (TextUtils.isEmpty(str)) {
        return false;
    }
    Options options = new Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(str, options);
    int i3 = options.outWidth;
    int i4 = options.outHeight;
    if (options.mCancel || options.outWidth == -1 || options.outHeight == -1) {
        return false;
    }
    int i5 = i3 > i4 ? i3 : i4;
    if (i3 >= i4) {
        i3 = i4;
    }
    f.b("AsynScaleCompressImage", "longSide=" + i5 + "shortSide=" + i3);
    options.inPreferredConfig = Config.RGB_565;
    if (i5 > i2 || i3 > i) {
        return true;
    }
    return false;
}
 
Example #30
Source File: a.java    From letv with Apache License 2.0 6 votes vote down vote up
private static int b(Options options, int i, int i2) {
    double d = (double) options.outWidth;
    double d2 = (double) options.outHeight;
    int ceil = i2 == -1 ? 1 : (int) Math.ceil(Math.sqrt((d * d2) / ((double) i2)));
    int min = i == -1 ? 128 : (int) Math.min(Math.floor(d / ((double) i)), Math.floor(d2 / ((double) i)));
    if (min < ceil) {
        return ceil;
    }
    if (i2 == -1 && i == -1) {
        return 1;
    }
    if (i != -1) {
        return min;
    }
    return ceil;
}