我正在使用意图启动相机:
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
getParent().startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
Run Code Online (Sandbox Code Playgroud)
和使用:
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
photoImage.setImageBitmap(thumbnail);
photoImage.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
但它只是一个缩略图,我如何获得完整的位图?我知道我可以使用自己的Activity并使用:
Camera.PictureCallback()
Run Code Online (Sandbox Code Playgroud)
但无论如何使用Intent做到了吗?
谢谢!
编辑:
我也尝试过:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Uri uri = data.getData();
imageView.setImageURI(uri);
}
Run Code Online (Sandbox Code Playgroud)
它适用于从库中选择的照片,但对于相机意图,data.getData()返回null.
我在C#中有BitmapImage.我需要对图像进行操作.例如灰度,在图像上添加文本等.
我在stackoverflow中找到了grayscaling函数,它接受Bitmap并返回Bitmap.
所以我需要将BitmapImage转换为Bitmap,进行操作并转换回来.
我怎样才能做到这一点?这是最好的方式吗?
我搜索了关于字节数组的所有问题,但我总是失败.我从未编写过c#我是这方面的新手.你能帮我解决一下如何从字节数组制作图像文件.
这是我的函数,它将字节存储在名为的数组中 imageData
public void imageReady( byte[] imageData, int fWidth, int fHeight))
Run Code Online (Sandbox Code Playgroud) 有没有办法将图像转换为每像素格式16位灰度,而不是将每个r,g和b分量设置为亮度.我目前有一个文件bmp.
Bitmap c = new Bitmap("filename");
Run Code Online (Sandbox Code Playgroud)
我想要一个Bitmap d,即c的灰度版本.我确实看到一个包含System.Drawing.Imaging.PixelFormat的构造函数,但我不明白如何使用它.我是Image Processing和相关C#库的新手,但对C#本身有一定的经验.
任何帮助,参考在线来源,提示或建议将不胜感激.
编辑:d是c的灰度版本.
我是这个网站的新手,我提出了一个关于Android的问题.
有没有办法将位图转换为灰度?我知道如何绘制灰度位图(使用画布操作:http://www.mail-archive.com/android-developers@googlegroups.com/msg38890.html)但我真的需要灰色的实际位图(或者至少可以在以后转换为位图的东西).我是否必须手动实现(逐像素操作)?
我搜索了很多,但仍然找不到.谁知道一个简单/有效的方法呢?
非常感谢!
我需要将视图转换为位图以预览我的视图并将其保存为图像.我尝试使用以下代码,但它创建了一个空白图像.我无法理解我犯了什么错误.
View viewToBeConverted; Bitmap viewBitmap = Bitmap.createBitmap(viewToBeConverted.getWidth(), viewToBeConverted.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(viewBitmap);
viewToBeConverted.draw(canvas);
savephoto(“f1”, viewBitmap);
//// public void savephoto(String filename,Bitmap bit)
{
File newFile = new File(Environment.getExternalStorageDirectory() + Picture_Card/"+ filename+ ".PNG");
try
{
newFile.createNewFile();
try
{
FileOutputStream pdfFile = new FileOutputStream(newFile); Bitmap bm = bit; ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG,100, baos); byte[] bytes = baos.toByteArray();
pdfFile.write(bytes);
pdfFile.close();
}
catch (FileNotFoundException e)
{ //
}
} catch (IOException e)
{ //
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用LRUCache缓存存储在文件系统上的位图.我根据这里的示例构建了缓存:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
问题是我在使用应用程序时经常看到OutOfMemory崩溃.我相信当LRUCache驱逐图像为另一个图像腾出空间时,内存不会被释放.
当图像被驱逐时,我添加了对Bitmap.recycle()的调用:
// use 1/8 of the available memory for this memory cache
final int cacheSize = 1024 * 1024 * memClass / 8;
mImageCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getByteCount();
}
@Override
protected void entryRemoved(boolean evicted, String key, Bitmap oldBitmap, Bitmap newBitmap) {
oldBitmap.recycle();
oldBitmap = null;
}
};
Run Code Online (Sandbox Code Playgroud)
这可以解决崩溃问题,但是它也会导致图像有时不会出现在应用程序中(只是图像所在的黑色空间).任何时候我都会在Logcat中看到这条消息:Cannot generate texture from bitmap.
一个快速谷歌搜索显示这是发生,因为显示的图像已被回收.
那么这里发生了什么?为什么再循环图像仍然在LRUCache中,如果我只是在它们被删除后回收它们?实现缓存的替代方法是什么?Android文档明确指出LRUCache是可行的方法,但他们没有提到回收位图的必要性或如何做到这一点.
解决: 如果它有用给其他人,由接受的答案建议解决这个问题是不是做什么,我在做上面的代码示例(不回收的位图 …
我有这个问题,请看跟踪堆栈:
E/AndroidRuntime(2410): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #5: <bitmap> requires a valid src attribute
Run Code Online (Sandbox Code Playgroud)
我的xml文件如下所示:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/btn_1"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
btn_1是可绘制资源中的另一个xml文件当我使用图像(*.png)而不是xml drawable时,它没问题.
我可以使用可绘制资源作为src来进行位图吗?以防万一这是我的btn_1.xml文件.即使btn_1文件没有项目,它也不起作用.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/btn_arrow_bg_red"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/btn_arrow_white" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud) 我想将a缩放Bitmap到与运行时相关的宽度和高度,其中保持纵横比并Bitmap填充整个宽度并使图像垂直居中,裁剪多余部分或用0像素填充间隙.
我目前正在通过创建Bitmap所有0像素像素并在其Bitmap上绘制图像,缩放到指定的宽度并保持纵横比来自己重绘位图,但是,它最终会丢失/搞砸像素数据.
我是这样做的:
Bitmap background = Bitmap.createBitmap((int)width, (int)height, Config.ARGB_8888);
float originalWidth = originalImage.getWidth(), originalHeight = originalImage.getHeight();
Canvas canvas = new Canvas(background);
float scale = width/originalWidth;
float xTranslation = 0.0f, yTranslation = (height - originalHeight * scale)/2.0f;
Matrix transformation = new Matrix();
transformation.postTranslate(xTranslation, yTranslation);
transformation.preScale(scale, scale);
canvas.drawBitmap(originalImage, transformation, null);
return background;
Run Code Online (Sandbox Code Playgroud)
是否有一个库或一些更好的代码可以做得更好?我希望图像看起来尽可能清晰,但我知道我的功能不会提供很好的结果.
我知道我可以通过使用整数缩放而不是浮动缩放来保持图像保持良好,但我需要宽度为100%填充.
此外,我知道一个ImageView人的Gravity.CENTER_CROP能力,但也使用整数缩放,因此当它不应该时,它会切断图像的宽度.
在我的XML文件中,我使用位图如下
<bitmap
android:src="@drawable/Icon"
android:gravity="center"/>
Run Code Online (Sandbox Code Playgroud)
这里图标的图像宽度超出了屏幕.
我试过android:width ="100dp"等等.但它没有用.
完整的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle">
<stroke android:width="3dp" android:color="@color/black" />
<solid android:color="@color/bg_green" />
</shape>
</item>
<item>
<bitmap
android:src="@drawable/Icon"
android:gravity="center"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
如何减小上述位图的宽度和高度?