当我尝试在 Android N 的 View Pager 中加载一组图像时遇到问题(检查 Samsung S6)。
java.lang.RuntimeException:画布:尝试绘制太大(132710400字节)位图。
图片尺寸为960*720,大小为64k,View Pager数量为4
现在我将所有图像放在普通的“drawable”文件夹中。我尝试将所有图像替换为“drawable-xxhdpi”,但问题仍然存在。
有没有办法在不变形的情况下调整位图大小,使其不超过 720*1280 ?较小的高度和宽度完全没问题(在较小宽度或高度的情况下空白画布很好)我尝试了这个/sf/answers/1080891801/,但它给出了扭曲的图像。有人能提出更好的解决方案吗?
有没有办法在 Xaml Image 控件上显示 SoftwareBitmap 而不将 SoftwareBitmap 保存到文件?我想要一种在编辑后快速显示 SoftwareBitmap 的方法。
我试图从有关 BitMapFactory.decodeFile 的文件路径获取图片,以在 Canvas 中绘制位图并得到此异常:
Unable to decode stream: java.io.FileNotFoundException:
/content:/media/external/images/media/40: open failed: ENOENT (No such file
or directory)
02-02 10:03:19.793 3371-3371/com.group.digit.razvoj.appointment
E/AndroidRuntime: FATAL EXCEPTION: main
Run Code Online (Sandbox Code Playgroud)
但是当我使用该文件路径在片段中设置图像时,它工作正常。
这是我的代码:
String urilogo = helper.getUri();
File imgFile = new File(urilogo);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
在它起作用的片段中:
String urilogo = helper.getUri();
if(urilogo!= null || urilogo!= "") {
imageView.setImageURI(Uri.parse(urilogo));
}
Run Code Online (Sandbox Code Playgroud) 我有 2 个位图。我想以 80:20 的比例混合它们,所以我只需将像素值乘以 0,8 和 0,2。用 C 编写的代码(作为 for 循环)运行良好,但使用 AVX2 指令会导致输出图像错误。
#include <stdio.h>
#include <stdlib.h>
#include <immintrin.h>
#define ARRSIZE 5992826
void main(void){
FILE *bmp = fopen("filepath1", "rb"),
*bmpp = fopen("filepath2", "rb"),
*write = fopen("output", "wb");
unsigned char *a = aligned_alloc(32, ARRSIZE),
*b = aligned_alloc(32, ARRSIZE),
*c = aligned_alloc(32, ARRSIZE);
fread(c, 1, 122, bmp);
rewind(bmp);
fread(a, 1, ARRSIZE, bmp);
fread(b, 1, ARRSIZE, bmpp);
__m256i mm_a, mm_b;
__m256d mm_two = _mm256_set1_pd(2),
mm_eight = _mm256_set1_pd(8);
__m256d mm_c, mm_d,
mm_ten = …Run Code Online (Sandbox Code Playgroud) 我半回答了一个关于在位图中找到质量簇的问题.我说半答案是因为我把它放在一个条件下,我将位图中的所有点按质量分类并留给读者来过滤从同一个簇中删除点的列表.
然后在考虑这一步时,我发现解决方案并没有像我想象的那样跳出来.所以现在我要求你们帮忙.我们有一个像这样的质量点的列表(一个Python的元组列表,但你可以用任何语言表示它):
[ (6, 2, 6.1580555555555554),
(2, 1, 5.4861111111111107),
(1, 1, 4.6736111111111107),
(1, 4, 4.5938888888888885),
(2, 0, 4.54),
(1, 5, 4.4480555555555554),
(4, 7, 4.4480555555555554),
(5, 7, 4.4059637188208614),
(4, 8, 4.3659637188208613),
(1, 0, 4.3611111111111107),
(5, 8, 4.3342191043083904),
(5, 2, 4.119574829931973),
...
(8, 8, 0.27611111111111108),
(0, 8, 0.24138888888888888) ]
Run Code Online (Sandbox Code Playgroud)
每个元组的形式如下:
(x, y, mass)
Run Code Online (Sandbox Code Playgroud)
请注意,列表在此处排序.如果您的解决方案更喜欢不对它们进行排序,那就完全没问题了.
如果你还记得,那么挑战就是找到主要的质量集群.群集的数量尚不清楚.但是你知道位图的尺寸.有时,群集中的多个点的质量大于下一个(大小)群集的中心.所以我想做的是从更高质量的点开始并移除同一簇中的点(附近的点).
当我尝试这个时,我最终不得不一遍又一遍地浏览列表的一部分.我有一种感觉,我只是愚蠢.你会怎么做?伪代码或真实代码.当然,如果你能用Python代码从我离开的那个地方起飞,我就更容易进行实验.
下一步是弄清楚位图中确实有多少个簇.我仍然在努力定义这个问题所以我可能会回答一个问题.
编辑:我应该澄清,我知道这个问题没有"正确"的答案.问题的名称是关键.完成了我的聚类的第一阶段.我正在寻找一种快速,准确 - "足够"的方法来过滤掉附近的点.
如果你知道如何让问题更清楚,请告诉我.
对于使用按位掩码来存储值的特定应用程序,我想执行某个按位过滤器,但我不确定它的名称是什么,或者你是如何以合理的方式实际执行它的.
// I'll just refer to the operator as "?" for the sake of example:
Input1 ? Input2 = Output
0 ? 0 = 0
0 ? 1 = 0
1 ? 0 = 1
1 ? 1 = 0
101 110 1100
? 111 ? 100 ? 1010
= 000 = 010 = 0100
Run Code Online (Sandbox Code Playgroud)
我的语言是PHP,但欢迎任何解释.
我有一个应用程序,动态生成6到100个小位图,供用户在给定的会话中在屏幕上移动.我现在生成它们onCreate并将它们存储到SD卡中,以便在更改方向后我可以将它们从外部存储器中取出并再次显示它们.但是,这需要花费时间(加载),并且我希望在生命周期更改之间保留位图引用,以便更快地访问.
我的问题是,是否有更好的地方存储我生成的位图?我正在考虑在我的基本活动中创建一个静态存储库,当应用程序从内存中完全删除时,只需要重新加载(关闭,其他应用程序需要资源,30分钟重启等).
理想情况下,我希望用户能够退回标题屏幕,单击"恢复"按钮,然后onCreate我只能访问那些驻留位图引用,而不必再次从存储中加载它们.出于这个原因,我认为不是Activity.onRetainNonConfigurationInstance我需要的.
或者,有没有比我正在做的或我描述的计划更好的方法来处理多个生成的位图?
在我的应用程序中,我首先让用户选择一个视频:
startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT).setType("video/*"), ACTIVITY_PICKVIDEO);
Run Code Online (Sandbox Code Playgroud)
然后我确定视频ID:
fileID = Integer.parseInt(contentUri.getLastPathSegment());
Run Code Online (Sandbox Code Playgroud)
因此,视频content://media/external/video/media/5的ID为5.
然后我尝试获取缩略图位图:
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, fileID, MediaStore.Video.Thumbnails.MICRO_KIND, options);
Run Code Online (Sandbox Code Playgroud)
抛出没有异常,但位图的宽度和高度为-1.我不确定所需的ID getThubnail()是否实际上是我上面确定的ID.
有没有人知道如果你有内容Uri如何获取缩略图位图的工作示例?
有趣的是(也许是这样)当我尝试使用MediaStore.Video.Thumbnails.MINI_KIND缩略图大小和尝试时,我会得到null .IllegalArgumentException ("Unsupported kind: 2")FULL_SCREEN_KIND
我正在使用Android 2.1的摩托罗拉里程碑.
编辑: 我也尝试通过查询BaseColumns._ID来获取ID,但结果与Uri相同(在给定的示例中,_ID为5).
我从教程网站复制了这段代码,因为我正在努力学习它.但是我收到了错误
package com.android.test;
import android.R;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.ImageView.ScaleType;
public class Rotate extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = new LinearLayout(this);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
Run Code Online (Sandbox Code Playgroud)
在最后一行,我得到一个错误,其中写有".icon".它说,"图标无法解析或不是一个领域."
int width = bitmap.getWidth(); int height = bitmap.getHeight();
Run Code Online (Sandbox Code Playgroud)Matrix matrix = new Matrix(); matrix.postRotate(90); Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0,width,height,matrix,true); …