/******************************************************************************* * Copyright 2011-2013 Sergey Tarasevich * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package cn.link.imageloader.decode; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapFactory.Options; import cn.link.imageloader.DisplayOptions; import cn.link.imageloader.assist.ImageSize; import cn.link.imageloader.assist.ImageSizeUtils; import java.io.ByteArrayOutputStream; import java.io.IOException; /** * Decodes images to {@link android.graphics.Bitmap}, scales them to needed size * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @see ImageDecodingInfo * @since 1.8.3 */ public class BaseImageDecoder implements ImageDecoder { @Override public Bitmap decode(ByteArrayOutputStream out, DisplayOptions options) throws IOException { Bitmap bitmap = null; Options op = new Options(); op.inJustDecodeBounds = true; bitmap = BitmapFactory.decodeByteArray(out.toByteArray(), 0, out.size(), op); ImageSize srcSize = new ImageSize(op.outWidth, op.outHeight); op.inSampleSize = ImageSizeUtils.computeImageSampleSize(srcSize, options.mTargetSize, options.mViewScalType, false); op.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeByteArray(out.toByteArray(), 0, out.size(), op); out.close(); return bitmap; //ToDo } }