/**
* Returns a Bitmap representing the thumbnail of the specified Bitmap.
* The size of the thumbnail is defined by the dimension
* android.R.dimen.launcher_application_icon_size.
*
* This method is not thread-safe and should be invoked on the UI thread only.
*
* @param bitmap The bitmap to get a thumbnail of.
* @param context The application's context.
*
* @return A thumbnail for the specified bitmap or the bitmap itself if the
* thumbnail could not be created.
*/
public static Bitmap createBitmapThumbnail(Bitmap bitmap, Context context)
{
if(FusionField.iconWidth == -1&&(FusionField.screenWidth == 800 && FusionField.screenHeight == 480)){
FusionField.iconWidth = 80;
FusionField.iconHeight = 98;
}
else if (FusionField.iconWidth == -1)
{
FusionField.iconWidth = 60;
FusionField.iconHeight = 82;
}
final int bitmapWidth = bitmap.getWidth();
final int bitmapHeight = bitmap.getHeight();
Log.e("dean xiang", "" + bitmapWidth + ":" + bitmapHeight);
if (FusionField.iconWidth > 0 && FusionField.iconHeight > 0)
{
final Bitmap.Config c = Bitmap.Config.ARGB_8888;
final Bitmap thumb = Bitmap
.createBitmap(FusionField.iconWidth, FusionField.iconHeight, c);
final Canvas canvas = sCanvas;
final Paint paint = sPaint;
canvas.setBitmap(thumb);
paint.setDither(false);
paint.setFilterBitmap(true);
// int offsetX = Math.abs(sIconWidth - bitmapWidth) / 2;
// int offsetY = Math.abs(sIconHeight - bitmapHeight) / 2;
//
// sBounds.set(offsetX, offsetY, bitmapWidth + offsetX,
// bitmapHeight + offsetY);
// sOldBounds.set(0, 0, bitmapWidth, bitmapHeight);
// canvas.drawBitmap(bitmap, sOldBounds, sBounds, paint);
sBounds.set(0, 0, FusionField.iconWidth, FusionField.iconHeight);
sOldBounds.set(0, 0, bitmapWidth, bitmapHeight);
canvas.drawBitmap(bitmap, sOldBounds, sBounds, paint);
return thumb;
}
return bitmap;
}
分享到:
相关推荐
通过BitmapShader的setLocalMatrix方法,可以调整Bitmap的形状和大小,配合Matrix实现圆角效果。 在实际项目中,可能还会遇到图片比例不一致导致的圆角变形问题,这时可以考虑先对Bitmap进行等比例缩放,确保在裁剪...
在实际应用中,我们可能需要根据需求动态调整图片大小或比例,这时可以使用Bitmap.createScaledBitmap方法。这个方法可以将Bitmap缩放到指定的尺寸,同时保持原图像的比例: ```java // 缩放Bitmap至新的尺寸 ...
"Android bitmap图片压缩工具类"就是针对这一需求设计的一个实用工具,它能够有效地减小图片的大小,同时满足基本的显示要求。 BitmapCompressUtils这个类通常包含了一系列静态方法,用于对Bitmap进行不同类型的...
在Android开发中,有时我们需要将Bitmap对象转换成不同的图片格式,比如BMP。BMP(Bitmap File Format)是一种常见的位图文件格式,但它并不像JPEG或PNG那样被Android SDK直接支持。本文将详细介绍如何在Android中将...
使用Matrix对象调整Bitmap的大小,以适应特定的尺寸: ```java // 获取原图的宽高 int width = bm.getWidth(); int height = bm.getHeight(); // 设置目标尺寸 int newWidth = 320; int newHeight = 480; ...
综上所述,处理Android Bitmap OOM问题需要综合运用多种技术,包括调整图片大小、选择合适的编码格式、合理加载和释放Bitmap,以及利用库和缓存机制。在Android 2.0版本中关闭硬件加速是一个可行的解决方案,但应...
如果你想只绘制Bitmap的一部分,比如红色线条划分的四个部分中的第二个部分,你可以调整`src`矩形的坐标。假设第二个部分的左上角坐标是(x1, y1),右下角是(x2, y2),则可以这样设置`src`: ```java Rect srcRect =...
### Android Bitmap 图像特效处理 #### 一、概述 在Android开发过程中,图像处理是一项非常重要的功能,尤其是在需要实现各种视觉效果的应用场景中。本文主要介绍如何利用Android平台提供的工具来实现图片的特效...
9. **使用 Glide 或 Picasso 图片加载库**:这些第三方库已经内置了处理Bitmap的优化策略,如内存和磁盘缓存、异步加载、自动调整大小等,能帮助开发者更轻松地处理Bitmap。 10. **监控内存使用**:使用Android ...
如果需要动态调整图片大小以适应视图,可以使用`Bitmap.createScaledBitmap()`方法。 4. 图片裁剪: 在这个示例中,裁剪圆形头像是一个常见的需求,通常通过Canvas和Paint来实现。首先创建一个圆形Bitmap,然后在...
- **颜色转换**:通过ColorFilter或 PorterDuff.Mode 可以改变Bitmap的颜色效果。 - **合并与拼接**:多个Bitmap可以使用Canvas进行组合,形成新的Bitmap。 - **滤镜效果**:利用PixelMapper或自定义Shader实现...
- 质量压缩:`Bitmap.CompressFormat.JPEG`或`Bitmap.CompressFormat.PNG`配合`compress()`方法,可以根据质量参数调整压缩级别,减少图片的大小。 - 码率压缩:使用`Bitmap.createBitmap()`的重载方法,指定...
在Android开发中,图片处理是必不可少的一部分,尤其是对于性能优化来说,Bitmap的合理管理显得尤为重要。Bitmap对象在内存中占据的大小直接关系到应用的内存消耗,可能导致内存溢出(OOM)问题。本文将深入探讨如何...
解决方法是合理控制缓存大小,适时调用`destroyDrawingCache()`,并考虑使用Bitmap的压缩选项来减少内存占用。 - **图像质量与透明度问题**:在转换过程中,保持View的Alpha通道设置和背景色透明至关重要,否则可能...
- 对于大图,应在低分辨率下加载,然后根据需要动态调整大小,以节省内存。 - 使用PurgeableBitmap或LruCache进行内存缓存管理,防止内存溢出。 - 使用inBitmap特性,让BitmapFactory复用已解码的Bitmap内存,...
- 考虑到Android设备的内存限制,转换后的Bitmap应使用适当配置,如调整大小、选择适当的压缩格式(如ARGB_8888或RGB_565)等,以减少内存消耗。 - 使用异步操作,避免UI线程阻塞,可以使用AsyncTask或其他异步...
在Android开发中,处理`Bitmap`内存溢出问题是一个常见的挑战,尤其是在处理高分辨率或大尺寸图片时。当应用程序尝试加载或操作一张超出虚拟机内存预算的`Bitmap`时,系统会抛出`java.lang.OutOfMemoryError: bitmap...
- 质量与大小:在压缩Bitmap时,可以通过调整compress()方法的第二个参数(quality)来控制压缩质量,降低质量会减少文件大小但可能导致图像失真。 - 内存管理:处理大图时,要特别注意内存使用。可以使用...
- 旋转操作可能会导致Bitmap的尺寸改变,因此在旋转后可能需要调整新的Bitmap大小以适应屏幕。 - 如果旋转后的Bitmap尺寸过大,可能会消耗大量内存,导致性能问题甚至内存溢出。因此,旋转前应考虑是否需要先对...
在Android开发中,经常需要对图片进行尺寸调整以适应不同的屏幕大小或优化性能。Bitmap提供了缩放的方法,如`createScaledBitmap()`,这个方法接受源Bitmap、目标宽度、目标高度和是否保持原图比例作为参数。保持...