我想用渐变背景绘制图像.我已经创建了一个可绘制的位图资源,如下所示
<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.
所以我从根本上不了解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,我都会非常感激.
提前致谢
我想使用这样的多部分上传将已编辑的位图图像上传到服务器,
multipartEntity.addPart("ProfilePic", new FileBody(file));
Run Code Online (Sandbox Code Playgroud)
但我无法将Bitmap(android.graphics.Bitmap)图像转换为File(java.io.File).
我试图将其转换为字节数组,但它也没有用.
有没有人知道android的内置功能或任何将Bitmap转换为File的解决方案?
请帮忙...
在Xamarin,为图像启用缩放缩放的最佳方法是什么?目前我只有ImageView一个Bitmap图像作为图像.
我已经做了一些研究,我找到了一些例子,其中人们已经使用了其他一些库,但是在我开始编写这段代码之前,想要一些关于在图像上启用缩放缩放的最佳方法的建议.
那么Android,具体来说,在图像中启用缩放缩放的最佳方法是什么Xamarin?
预先感谢
我有这个代码来交叉淡化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
我试图以编程方式加载.png文件,但我不确定我应该给出的确切路径是什么.我尝试了不同的路径,我认为会让我到资源,但都返回null:
InputStream is = getClass().getClassLoader().getResourceAsStream("playstore.png");
Bitmap bmp = BitmapFactory.decodeStream(is);
mStoreImage.setImageBitmap(bmp);
Run Code Online (Sandbox Code Playgroud)
我的项目是关于Android中的图像处理.我的问题是,当我在ImageView中加载22MB图像时,我得到一个OutOfMemoryError.
错误:
java.lang.OutOfMemoryError:无法在dalvik.system.VMRuntime.newNonMovableArray(本机方法)中分配带有11397108个空闲字节的244588824字节分配和79MB直到OOM
[编辑:我做了一个最小的项目,试图缩小正在发生的事情.底部的代码在保存时仍会生成相同的工件]
我有一个使用Paths绘制简单2D几何的应用程序.形状都是纯色,有时alpha <255,可以用线条装饰.在绘制几何图形的视图中,从未出现过如何绘制事物的问题.但是,当我使用相同的代码绘制到位图,然后将其保存为JPEG(100质量)或PNG时,输出文件的纯色区域中始终存在相同的伪像.这是一种通常与JPEG压缩相关的斑点.
我尝试了以下内容
所有这些都会产生相同的文物,既不会变得更糟也不会更好.
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) 在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天.任何变通方法或解决方案?
我想从可绘制资源ID中获取Bitmap,我找到了一种使用BitmapFactory解码方法对其进行解码的解决方案,但它给出了null。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_tick);
Run Code Online (Sandbox Code Playgroud)