我有一个5000 x 4000 px图像,我想画在画布上.
首先,我尝试从资源加载它.我把它放进去了/res/drawable.
我使用以下方法:
InputStream input = getResources().openRawResource(R.drawable.huge_image);
Drawable d = Drawable.createFromStream(input, "image");
d.setBounds(...);
d.draw(canvas);
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力.
在这种情况下,InputStream是一个AssetManager.AssetInputStream.
所以现在我想从SD卡加载它.
这是我试图做的事情:
File f = new File(path);
Uri uri = Uri.fromFile(f);
InputStream input = mContext.getContentResolver().openInputStream(uri);
Drawable d = Drawable.createFromStream(input, "image");
Run Code Online (Sandbox Code Playgroud)
在这种情况下InputStream是a FileInputStream,我OutOfMemoryError在创建时得到了Drawable.
所以我想知道:
有没有办法加载图像而不会出现错误?或者有没有办法将a转换FileInputStream为AssetInputStream?
注意:
我不想调整图像大小,因为我正在实现缩放/平移功能.请不要告诉我阅读有效加载大位图.
你可以在这里查看全班.使用时发生错误setImageUri().
这是我的错误日志:
08-13 11:57:54.180: E/AndroidRuntime(23763): FATAL EXCEPTION: main
08-13 11:57:54.180: E/AndroidRuntime(23763): java.lang.OutOfMemoryError: …Run Code Online (Sandbox Code Playgroud) 我将CameraX的分析器用例与 MLKit 的BarcodeScanner. 我想先裁剪从相机接收到的图像的一部分,然后再将其传递到扫描仪。
我现在正在做的是将ImageProxy(我在分析器中收到的)转换为Bitmap,裁剪它,然后将其传递给BarcodeScanner. 缺点是这不是一个非常快速和有效的过程。
我还注意到运行此代码时 Logcat 中收到的警告:
ML Kit 检测到您似乎将相机帧作为位图对象传递给检测器。这是低效的。请对camera2 API使用YUV_420_888格式,对(旧)相机API使用NV21格式,并将字节数组直接传递给ML Kit。
不进行转换固然很好ImageProxy,但是如何裁剪我想要分析的矩形呢?
我已经尝试过设置(imageProxy.image.cropRect) 类cropRect的字段Image,但它似乎并不影响最终结果。
android android-image android-camera2 android-camerax google-mlkit
使用vector drawables和使用一组.pngAndroid系统图标有什么优缺点?
如果它们用于两种不同的东西,那是什么?
我正在使用文件提供程序将照片保存到给定目的地.我明白了:
java.lang.IllegalArgumentException:尝试打开活动以从摄像头捕获图像时缺少android.support.FILE_PROVIDER_PATHS元数据.
我的manifest.xml文件:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)
我的paths.xml文件:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="content" path="Android/data/com.my_package_name/files/" />
</paths>
Run Code Online (Sandbox Code Playgroud)
和Java代码:
File externalFilesDirectory = this.getExternalFilesDir(null);
File imageFile = File.createTempFile(
imageFileName,
".jpg",
externalFilesDirectory
);
Uri photoURI = FileProvider.getUriForFile(this, "com.example", imageFile);
Run Code Online (Sandbox Code Playgroud)
最后一行给出了例外.我在这里错过了什么?我已经关注了官方Android开发网站的教程(https://developer.android.com/training/camera/photobasics.html)
android android-image android-xml android-file android-fileprovider
有许多Q&A线程,但没有一个提供真正的答案,或者我找不到它.
为了确保你,我先问了一下:
那么有谁知道如何使用Intent(如示例代码中)并插入一个Photo,它是在Bitmap中保存的?
示例代码我现在用它来启动对话意图,让用户在保存之前插入或取消并可能编辑字段:
// PrivateContactClass c;
// Bitmap photo;
Intent inOrUp = new Intent(ContactsContract.Intents.Insert.ACTION, ContactsContract.Contacts.CONTENT_URI);
inOrUp.setType(ContactsContract.Contacts.CONTENT_TYPE);
inOrUp.putExtra(ContactsContract.Intents.Insert.NAME, ModelUtils.formatName(c));
inOrUp.putExtra(ContactsContract.Intents.Insert.PHONE, getPrimaryPhone());
inOrUp.putExtra(ContactsContract.Intents.Insert.TERTIARY_PHONE, c.getMobile());
inOrUp.putExtra(ContactsContract.Intents.Insert.EMAIL, c.getMail());
inOrUp.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, c.getFunction());
inOrUp.putExtra(ContactsContract.Intents.Insert.NOTES, getSummary());
inOrUp.putExtra(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
startActivity(inOrUp);
Run Code Online (Sandbox Code Playgroud)
不仅仅使用intent,因为我怀疑我们可以传递Data ContentProvider保存的图像ID,或者直接在Intent中传递Bitmap.
从上面的代码扩展
// must be declared in class-context
private static final int CONTACT_SAVE_INTENT_REQUEST = 1;
...
startActivityForResult(inOrUp,CONTACT_SAVE_INTENT_REQUEST);
Run Code Online (Sandbox Code Playgroud)
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent); …Run Code Online (Sandbox Code Playgroud) android android-intent contactscontract android-image android-contentprovider
我试图在Android通知上找到大图片风格图片的确切尺寸.实际上,我需要这些以便在正确的维度上即时计算图像,以避免在我的应用程序中下载太多.
我做了一些测试,例如,我不能将屏幕的宽度作为图像的宽度,因为通知中心并不完全适合平板电脑上的屏幕.
是否有任何方法可以获得这些尺寸,就像我们对带有android.R.dimen.notification_large_icon_width和的大图标一样android.R.dimen.notification_large_icon_height?
谢谢
这是关于毕加索行为的一个关键点我不知道.
想象一下,你正在展示十件物品的幻灯片.比如,他们在屏幕上各持有十秒钟.
理想的行为是这样的:在幻灯片放映开始时,我只是执行以下操作:
picasso.get( url1 )
picasso.get( url2 )
picasso.get( url3 )
picasso.get( url4 )
picasso.get( url5 )
picasso.get( url6 )
picasso.get( url7 )
picasso.get( url8 )
picasso.get( url9 )
picasso.get( url10 )
Run Code Online (Sandbox Code Playgroud)
事实上,毕加索会一次一个地排队.
毕加索的行为是什么,如果我告诉它一次预热10个网址?
是否有可能让毕加索一次只做一件事,按顺序 - 是否有这样的选择?
(产生的其他问题是,你可以取消队列,还是......?)
感谢@alicanozkara在这个页面上的惊人答案我第一次了解到
https://github.com/facebook/fresco
(13k星)无论好坏,我认为毕加索时代可能已经结束了.
在我的应用程序中,我希望用户能够选择一个包含在其中的图像的某些内容ImageView.
要选择内容,我将该ImageView类子类化,使其实现,OnTouchListener以便在其上绘制一个由用户决定的带边框的矩形.
下面是绘图结果的示例(要了解它的工作原理,您可以将其视为在桌面上单击鼠标并拖动鼠标时):

现在我需要确定哪些像素的的Bitmap图像对应于所选择的部分.很容易确定哪些是ImageView属于矩形的点,但我不知道如何获得对应的像素,因为它ImageView具有与原始图像不同的纵横比.
我遵循这里特别描述的方法,但也在这里,但我并不完全满意,因为在我看来,对应关系是在像素和点之间的1对1 ImageView,并没有给我原始图像上的所有对应像素到选定的区域.
hoveredRect在其ImageView内部的点上调用矩形是:
class Point {
float x, y;
@Override
public String toString() {
return x + ", " + y;
}
}
Vector<Point> pointsInRect = new Vector<Point>();
for( int x = hoveredRect.left; x <= hoveredRect.right; x++ ){
for( int y = hoveredRect.top; y <= hoveredRect.bottom; y++ ){
Point pointInRect = new Point();
pointInRect.x …Run Code Online (Sandbox Code Playgroud) 我有我需要加载的缩略图的要求和Text在ListView其被通过自定义设置Adapter.缩略图应存放在缓存中,供我使用的通用图像装载机不过我在它的实现非常困惑,以及如何在使用它按我的要求来加载图像ListView从URL.请通过良好的实施建议我一些方法.
我在更改Android应用程序的图标时遇到了困难.我遵循了指示:
1.Right click on the project
2.Select New -> Image Asset
3.Select 'Asset Type' as Image
4.Select Path of and .png image
5.Optional: padding, trimming etc.
6.Next and Finish
Run Code Online (Sandbox Code Playgroud)
这改变了minmap/ic_launcher.png内容中的图标,但是,这不会更改minmap/ic_launcher_round.png文件夹内容.这样,如果Android系统配置为显示圆形图标,则此文件夹中显示的图标:minmap/ic_launcher_round.png.但我找不到改变该特定文件夹内容的方法.
我试图在Path中选择一个圆形图像,但stil不起作用.
如果我将我的Android手机设置为显示应用程序启动器图标为方形,我会看到所需的图标,但是,如果它被更改为圆形,则我看不到我想要的图标.
请指导如何更改圆形ic_launchers.
谢谢
android ×10
android-image ×10
java ×2
android-file ×1
android-xml ×1
google-mlkit ×1
image ×1
picasso ×1
png ×1