标签: android-bitmap

使用底部对齐绘制平铺位图

我想用渐变背景绘制图像.我已经创建了一个可绘制的位图资源,如下所示

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/bg"
        android:tileMode="repeat"
        android:gravity="bottom"
        />
Run Code Online (Sandbox Code Playgroud)

如您所知,定义tileMode时会忽略重力.我尝试创建自己的类,它继承自BitmapDrawable,但我无法取得成功.请帮我应用这两个属性:tileMode和gravity.

user-interface android bitmap android-layout android-bitmap

5
推荐指数
1
解决办法
378
查看次数

Android使用PorterDuff来组合图像

所以我从根本上不了解PorterDuff及其各种模式.我有两个想要合并的图像,一个是航拍图像,另一个是遮盖在天线上的alpha遮罩,所以只有某些部分可以显示.我有一个系统,我可以正确地将掩模覆盖到另一个图像上,只有它通过,但问题是,在这种情况下,我必须有一个背景颜色,我需要它是透明的.(类似于Android中使用黑白alpha蒙版进行高效位图屏蔽的问题)

Bitmap thumbnail = Bitmap.createBitmap(mThumbnailSize, mThumbnailSize, Config.ARGB_8888);
Canvas canvas = new Canvas(thumbnail);

Paint paint = new Paint();
paint.setFilterBitmap(true);
canvas.drawColor(Color.TRANSPARENT);
canvas.drawBitmap(aerial, transformation, paint);

paint = new Paint();
paint.setFilterBitmap(true);
paint.setColorFilter(new PorterDuffColorFilter(Color.WHITE,PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(overlay, transformation, paint);
Run Code Online (Sandbox Code Playgroud)

我觉得我已经尝试了ColorFilter,XferMode的每个组合,甚至以相反的顺序绘制图像,但似乎没有任何效果.我觉得我只是完全误解了PorterDuff模式是如何工作的(基于http://ssp.impulsetrain.com/porterduff.html上的大量信息).

如果有人对如何实现这一点有任何见解,请深入了解我应该使用什么PorterDuff模式,无论我应该使用ColorFilter还是XferMode,我都会非常感激.

提前致谢

android bitmap porter-duff android-bitmap

5
推荐指数
1
解决办法
1157
查看次数

将android.graphics.Bitmap转换为java.io.File

我想使用这样的多部分上传将已编辑的位图图像上传到服务器,

multipartEntity.addPart("ProfilePic", new FileBody(file));
Run Code Online (Sandbox Code Playgroud)

但我无法将Bitmap(android.graphics.Bitmap)图像转换为File(java.io.File).

我试图将其转换为字节数组,但它也没有用.

有没有人知道android的内置功能或任何将Bitmap转换为File的解决方案?

请帮忙...

android android-bitmap

5
推荐指数
1
解决办法
2万
查看次数

捏缩放Xamarin中的图像

Xamarin,为图像启用缩放缩放的最佳方法是什么?目前我只有ImageView一个Bitmap图像作为图像.

我已经做了一些研究,我找到了一些例子,其中人们已经使用了其他一些库,但是在我开始编写这段代码之前,想要一些关于在图像上启用缩放缩放的最佳方法的建议.

那么Android,具体来说,在图像中启用缩放缩放的最佳方法是什么Xamarin

预先感谢

android image pinchzoom xamarin android-bitmap

5
推荐指数
1
解决办法
4909
查看次数

使用ImageView ScaleType设置TransitionDrawable

我有这个代码来交叉淡化ImageView的背景:

private void setWithCrossfade(Bitmap bitmap) {
    //create drawable vector
    Drawable backgrounds[] = new Drawable[2];
    //getting first image
    backgrounds[0] = mImageView.getDrawable();
    backgrounds[1] = new BitmapDrawable(mImageView.getResources(), bitmap);

    TransitionDrawable transitionDrawable = new TransitionDrawable(backgrounds);
    transitionDrawable.setCrossFadeEnabled(true);

    mImageView.setAdjustViewBounds(false);
    mImageView.setImageDrawable(transitionDrawable);
    //it is needed to reset scale type
    mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    //start crossfading
    transitionDrawable.startTransition(250);
}
Run Code Online (Sandbox Code Playgroud)

ImageView scaleType设置为centerCropXML布局.但是,当交叉淡入淡出完成时,新位图设置为fitXY.在其他线程中,他们说可以通过重置来解决scaleType,但它也不起作用.在内存方面,调整位图大小不是一个合适的解决方案.有没有解决方法来实现这个?非常感谢你.

PS:请不要建议交叉淡化2个ImageViews,或者使用ViewSwitcher谢谢.

android android-animation transitiondrawable android-drawable android-bitmap

5
推荐指数
1
解决办法
968
查看次数

Android项目中getResourceAsStream的路径

我试图以编程方式加载.png文件,但我不确定我应该给出的确切路径是什么.我尝试了不同的路径,我认为会让我到资源,但都返回null:

InputStream is = getClass().getClassLoader().getResourceAsStream("playstore.png");
Bitmap bmp = BitmapFactory.decodeStream(is);
mStoreImage.setImageBitmap(bmp);
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,我不能使用资源,因为我正在构建.jar.这是我在Android Studio中显示的项目包结构: 在此输入图像描述

java android jar imageview android-bitmap

5
推荐指数
1
解决办法
4909
查看次数

Android - 如何在Imageview中加载超过20mb的图像

我的项目是关于Android中的图像处理.我的问题是,当我在ImageView中加载22MB图像时,我得到一个OutOfMemoryError.

错误:

java.lang.OutOfMemoryError:无法在dalvik.system.VMRuntime.newNonMovableArray(本机方法)中分配带有11397108个空闲字节的244588824字节分配和79MB直到OOM

android android-bitmap

5
推荐指数
1
解决办法
441
查看次数

将位图保存到磁盘时,实体路径显示工件

[编辑:我做了一个最小的项目,试图缩小正在发生的事情.底部的代码在保存时仍会生成相同的工件]

我有一个使用Paths绘制简单2D几何的应用程序.形状都是纯色,有时alpha <255,可以用线条装饰.在绘制几何图形的视图中,从未出现过如何绘制事物的问题.但是,当我使用相同的代码绘制到位图,然后将其保存为JPEG(100质量)或PNG时,输出文件的纯色区域中始终存在相同的伪像.这是一种通常与JPEG压缩相关的斑点.

查看截图: 活动截图

保存的图片: 保存的图像文件

放大文物: 放大文物

我尝试了以下内容

  • 保存为PNG和JPEG
  • 打开和关闭抖动和抗锯齿
  • 增加位图的DPI,并允许Bitmap使用其默认API
  • 应用矩阵我用作几何表示的相机,而不是将其应用于位图的Canvas
  • 在整个应用范围内打开和关闭硬件加速
  • 使用第三方库将位图保存为.bmp文件

所有这些都会产生相同的文物,既不会变得更糟也不会更好.

public class MainActivity extends AppCompatActivity {
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.context = getApplicationContext();
}

// button OnClick listener
public void saveImage(View view) {
    new saveBitmapToDisk().execute(false);
}

public Bitmap getBitmap() {
    final int bitmapHeight = 600, bitmapWidth = 600;
    Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
    Canvas bitmapCanvas = new Canvas(bitmap);

    float[] triangle = new float[6];
    triangle[0] = bitmapWidth / 2;
    triangle[1] …
Run Code Online (Sandbox Code Playgroud)

png android jpeg artifacts android-bitmap

5
推荐指数
1
解决办法
1316
查看次数

BitmapUtils从具有空间的foldername上抛出FileNotFoundException,同时从uri获取位图

在Android 5.1 上具有空间的文件夹获取FileNotFoundException .否则它的工作正常.我尝试用替换空间%20但是没有工作.还尝试过URLEncoder,但它失败了.

我正在使用contentresolver获取图像路径:

absolutePathOfImage=cursor.getString(column_index_data);
Run Code Online (Sandbox Code Playgroud)

这是(/ storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20181025-WA0001.jpg)

乌里:

file:///storage/emulated/0/WhatsApp/Media/WhatsApp%20Images/IMG-20181024-WA0022.jpg
Run Code Online (Sandbox Code Playgroud)

我想得到图像的位图,但是当从Uri获取位图时,BitmapUtils抛出异常:(注意:即使是Glide,毕加索也无法创建图像的缩略图)

        BitmapUtils.decodeSampledBitmap(mContext, mUri, mWidth, mHeight);
Run Code Online (Sandbox Code Playgroud)

java.lang.RuntimeException:无法加载采样位图:file:///storage/emulated/0/WhatsApp/Media/WhatsApp%20Images/IMG-20181024-WA0022.jpg/storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20181024-WA0022.jpg:打开失败:ENOENT(没有这样的文件或目录)

我在Android 5.1上遇到异常.在Android 8.0上运行相同的代码

从那以后就被困了2天.任何变通方法或解决方案?

android filenotfoundexception android-bitmap

5
推荐指数
1
解决办法
143
查看次数

从Drawable Resource Id解码位图给出null

我想从可绘制资源ID中获取Bitmap,我找到了一种使用BitmapFactory解码方法对其进行解码的解决方案,但它给出了null。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_tick);
Run Code Online (Sandbox Code Playgroud)

java android android-bitmap

5
推荐指数
1
解决办法
66
查看次数