我有一个Leptonica Pix对象返回
TessBaseApi.getThresholdedImage();
Run Code Online (Sandbox Code Playgroud)
现在,我怎么能将它转换为位图,以便我可以通过它显示它ImageView.
leptonica.android.Pix 至 android.graphics.Bitmap;
我没有找到查看API文件的转换方法.
我正在为Android上的图像处理开发一个应用程序,但我仍然在编写用于保存图像的代码.
这是我使用的方法:
private void saveImageToExternalStorage(Bitmap finalBitmap) {
String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-" + n + ".jpg";
File file = new File(myDir, fname);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
}
catch (Exception e) {
e.printStackTrace();
}
// Tell the media scanner about the new file so that it is …Run Code Online (Sandbox Code Playgroud) 我正在尝试SurfaceView使用以下代码为我的实际绘制位图:(这将在另一个Thread和 a 中运行while,因为它需要刷新SurfaceView)。
while (true)
{
try
{
// Enable drawing
// ERROR LINE!
Canvas ca = mPreview2.Holder.LockCanvas();
// Get current frame
Bitmap test = mediaPlayer.CurrentFrame;
// Actual drawing
Paint paint = new Paint();
ca.DrawBitmap(test, 0, 0, paint);
// Stop drawing
mPreview2.Holder.UnlockCanvasAndPost(ca);
} catch (Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
但是我有以下错误:(这是在线发生的: Canvas ca = mPreview2.Holder.LockCanvas();
Java.Lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference
Run Code Online (Sandbox Code Playgroud) 所以我有这个代码用于使用 mediastore 获取图像:
int dataIndex = mMediaStoreCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA );
mMediaStoreCursor.moveToPosition(position);
String dataString = mMediaStoreCursor.getString(dataIndex);
Uri mediaUri = Uri.parse("file://" + dataString);
return mediaUri;
Run Code Online (Sandbox Code Playgroud)
这很好地获取图片文件夹中的所有图像,我想更改它以获取特定文件夹中的所有图像,该文件夹将作为字符串传递。例如{ android/picture/specificfolder/}
我正在尝试将图像对象转换为位图,但它返回 null。
image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
Bitmap myBitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length,null);
Run Code Online (Sandbox Code Playgroud)
图像本身是jpeg图像,我可以将其保存到磁盘中,我想转换为位图的原因是因为我想在将其保存到磁盘之前进行最终旋转。挖掘类 BitmapFactory 我看到这一行。
bm = nativeDecodeByteArray(data, offset, length, opts);
Run Code Online (Sandbox Code Playgroud)
此行返回空值。使用调试器进一步挖掘
private static native Bitmap nativeDecodeByteArray(byte[] data, int offset,
int length, Options opts);
Run Code Online (Sandbox Code Playgroud)
这假设返回 Bitmap 对象,但它返回 null。
任何技巧..或想法?
谢谢
我想从存储上的视频路径在 ImageView 中显示视频缩略图。是否有采用视频路径并返回缩略图位图的函数?我通过此代码获取视频路径:
public ArrayList<String> getAllMedia() {
HashSet<String> videoItemHashSet = new HashSet<>();
String[] projection = {MediaStore.Video.VideoColumns.DATA, MediaStore.Video.Media.DISPLAY_NAME};
Cursor cursor = getContext().getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
try {
cursor.moveToFirst();
do {
videoItemHashSet.add((cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA))));
} while(cursor.moveToNext());
cursor.close();
} catch(Exception e) {
e.printStackTrace();
}
ArrayList<String> downloadedList = new ArrayList<>(videoItemHashSet);
return downloadedList;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发电影 Android 应用程序,它从 API 获取电影列表,该 API 提供所有电影的海报路径。
我想Bitmap从图像的 URL 获取图像,并将其保存为Bitmap模型类中的变量。我想将图像保存为数据库中的 blob 以便直接检索它,而无需在用户每次打开应用程序时重新下载。那可能吗?
我想做这样的事情,但它总是返回 null。
private Bitmap posterBitmap;
public void setPosterBitmap () {
Picasso.get().load(POSTERS_URL).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
posterBitmap = bitmap; // I don't want to set it to an Image view here
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
});
}
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我正在尝试改变方向。目前,当我旋转手机时,我的片段中的图像消失了。这显然是因为活动被销毁并重新创建。我没有尝试保存像图像这样的大数据,而是决定通过Uri在onSaveInstanceState方法中保存图像来解决这个问题:
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("imageUri", imageUri);
}
Run Code Online (Sandbox Code Playgroud)
在我的片段中onCreateView,我尝试检索 Uri 并将其粘贴回ImageView,同时牢记空的可能性。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_top_image, container, false);
imageView = view.findViewById(R.id.meme_image_view);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectedImage(v);
}
});
topTextView = view.findViewById(R.id.top_text_view);
bottomTextView = view.findViewById(R.id.bottom_text_view);
if(savedInstanceState != null){
if(imageUri != null){
Uri savedUri = savedInstanceState.getParcelable("imageUri");
imageView.setImageURI(savedUri);
}
}
return view;
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它不起作用。当我旋转手机时,图像仍然丢失。
完整片段:
public class …Run Code Online (Sandbox Code Playgroud) 从这个关于Layer-list drawables的开发者指南,
默认情况下,所有可绘制项目都会缩放以适合包含视图的大小.因此,将图像放置在不同位置的图层列表中可能会增加视图的大小,并且某些图像会根据需要进行缩放.
在第一句中,他们说项目被缩放以适合容器视图(而不是根据视图中包含的项目的大小来缩放视图).然后他们说容器视图的大小可能会增加(这意味着View正在缩放,对吧?).那么第二句与第一句不矛盾吗?有人可以解释那里的含义吗?
机器人:可绘制
可绘制的资源.必填.引用可绘制资源.
...
要避免缩放列表中的项目,请使用元素内的元素指定drawable ...
...
例如,以下定义了一个可缩放以适合其容器视图的项目:
Run Code Online (Sandbox Code Playgroud)<item android:drawable="@drawable/image" />为避免缩放,以下示例使用具有居中重力的元素:
Run Code Online (Sandbox Code Playgroud)<item> <bitmap android:src="@drawable/image" android:gravity="center" /> </item>
同样,他们说这android:drawable是必需属性,然后他们给出了一个不使用此属性的示例.什么是正确的?
要避免缩放列表中的项目,请使用
<bitmap>元素内部的<item>元素指定drawable并将重力定义为不缩放的内容,例如"center"
如何gravity可扩展性,以及如何为center它的价值使它不可扩展?
我们正在尝试将所有应用程序图标资源移至VectorDrawables,以减少应用程序的大小并轻松管理应用程序图标工具包.
我们已经有了一个带有我们应用程序所有图标的Icon Kit,全部为黑色,我们的想法是在每种用法中使用它们并使用适当的颜色着色.这可以(或多或少)完美地工作,直到你试图在layer-list/ selector/相似的地方做同样的,你需要包含一个<bitmap>或类似的项目...我不知道如何着色一个VectorDrawable也适用于< 21台设备
先决条件是不需要以编程方式进行,我知道这是可能的,但是它以编程方式打破了图标的所有简单使用,而且没有意义.
在简历中,是否有任何形式可以VectorDrawable在<Bitmap>XML中使用,并且它在<21设备中工作而不是以编程方式工作?
android ×10
android-bitmap ×10
java ×3
file ×1
imageview ×1
leptonica ×1
mediastore ×1
picasso ×1
surfaceview ×1
tess-two ×1
tesseract ×1
uri ×1
xamarin ×1