Articles of 位图

混合来自两个位图的像素

我在这里靠墙打我的头,我相当肯定我做了一些蠢事,所以有时间把我的愚蠢公之于众。 我正在尝试拍摄两张图像,使用标准混合算法(Hardlight,softlight,overlay,multiply等)将它们混合成第三张图像。 因为Android没有内置这样的混合属性,所以我走下了获取每个像素并使用算法组合它们的道路。 但是,结果是垃圾。 下面是简单乘法混合的结果(使用的图像和预期结果)。 基础: 混合: 预期结果: 垃圾结果: 任何帮助,将不胜感激。 下面是代码,我试图删除所有“垃圾”,但有些可能已经完成了。 如果事情不清楚我会清理它。 ImageView imageView = (ImageView) findViewById(R.id.ImageView01); Bitmap base = BitmapFactory.decodeResource(getResources(), R.drawable.base); Bitmap result = base.copy(Bitmap.Config.RGB_565, true); Bitmap blend = BitmapFactory.decodeResource(getResources(), R.drawable.blend); IntBuffer buffBase = IntBuffer.allocate(base.getWidth() * base.getHeight()); base.copyPixelsToBuffer(buffBase); buffBase.rewind(); IntBuffer buffBlend = IntBuffer.allocate(blend.getWidth() * blend.getHeight()); blend.copyPixelsToBuffer(buffBlend); buffBlend.rewind(); IntBuffer buffOut = IntBuffer.allocate(base.getWidth() * base.getHeight()); buffOut.rewind(); […]

Android – 从计时器线程更新位图

我有一个由一个带有ImageView的布局组成的Android项目。 public class MainActivity extends AppCompatActivity { /* original and stretched sized bitmaps */ private Bitmap bitmapOriginal; private Bitmap bitmapStretched; /* the only view */ private ImageView iv; …. } 此ImageView由此runnable函数更新 runnable = new Runnable() { @Override public void run() { iv.setImageBitmap(bitmapStretched); } }; runnable由一个在后台线程上运行的临时JNI函数运行,每秒调用60次。 public void jniTemporizedCallback(int buf[]) { /* set data to original […]

关于在sqlite db中存储图像的java.lang.OutOfMemoryError

我想将图像存储在我的数据库中。 另外,我想检查图像和标题是否已存在于数据库中。 如果是这样,它将不会将它们添加到数据库中。 这是我的class级。 景点 public class Attractions extends ListActivity { DataBaseHandler db = new DataBaseHandler(this); ArrayList imageArry = new ArrayList(); List contacts; ContactImageAdapter adapter; int ctr, loaded; int [] landmarkImages={R.drawable.oblation,R.drawable.eastwood,R.drawable.ecopark,R.drawable.circle}; String []landmarkDetails = { “Oblation”, “Eastwood”, “Ecopark”, “QC Circle”}; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { […]

Android问题将带有子项的ViewGroup转换为位图

我正在使用Canvas将ViewGroup(RelativeLayout)成功转换为Bitmap。 但是,当绘制发生时,我只看到ViewGroup的背景可绘制而不是它的子(两个TextViews)应该使用像FILL_PARENT这样的规则在RelativeLayout中布局。 RelativeLayout使用以下静态函数创建: public static RelativeLayout createProgrammeView(Context context, int width, int height, String title, String time) { RelativeLayout.LayoutParams params; // Layout Root View (RelativeLayout) RelativeLayout rlv = new RelativeLayout(context); params = new RelativeLayout.LayoutParams(width, height); rlv.setLayoutParams(params); rlv.setPadding(3, 3, 3, 3); rlv.setBackgroundResource(R.drawable.background); // Layout Title TextView tv = new TextView(context); params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_PARENT_TOP); params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); […]

Android编辑位图频道

可以使用extractAlpha()访问给定位图的alpha通道,但我无法find任何方法来实际设置位图的alpha通道。 如何将多个灰度图像作为通道重新组合成Android的位图?

如何有效地调整位图的大小,并在android中失去质量

我有一个大小为320×480的Bitmap ,我需要在不同的设备屏幕上拉伸它,我尝试使用这个: Rect dstRect = new Rect(); canvas.getClipBounds(dstRect); canvas.drawBitmap(frameBuffer, null, dstRect, null); 它工作,图像像我想要的那样填满整个屏幕,但图像像素化,看起来很糟糕。 然后我尝试了: float scaleWidth = (float) newWidth / width; float scaleHeight = (float) newHeight / height; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizedBitmap = Bitmap.createBitmap(frameBuffer, 0, 0, width, height, matrix, true); canvas.drawBitmap(resizedBitmap, 0, 0, null); 这次它看起来很完美,漂亮而且流畅,但是这段代码必须在我的主游戏循环中,并且每次迭代创建Bitmap都会让它非常慢。 如何调整图像大小以使其不会像素化并快速完成? find解决方案: Paint paint = […]

如何在canvas android中的onDraw()方法中快速绘制Bitmap

我试图在android中的单击方法上绘制一个标记。 当我绘制标记时它将绘制但是它将需要更多时间来绘制,即30-40毫秒,有时需要2-3秒。 这是我的类的代码,其中我有draw方法。 public class MyItemizedOverlay extends ItemizedOverlay { private ArrayList overlayItemList = new ArrayList(); public MyItemizedOverlay(Drawable pDefaultMarker, ResourceProxy pResourceProxy) { super(pDefaultMarker, pResourceProxy); } @Override public void draw(Canvas canvas, MapView mapView, boolean arg2) { super.draw(canvas, mapView, arg2); // —translate the GeoPoint to screen pixels— Point screenPts = new Point(); mapView.getProjection().toPixels(p, screenPts); // —add the marker— […]

如何在Android中加载大图像并避免内存不足错误?

我正在开发一个使用大图像(1390×870:150kb – 50kb)的应用程序。 当我点击触发器/ ImageView时,我正在添加图像。 在某一点上,我得到一个内存不足的错误: java.lang.OutOfMemoryError E/AndroidRuntime(23369): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) E/AndroidRuntime(23369): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:613) E/AndroidRuntime(23369): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:378) 为了调整图像大小,我正在这样做: Bitmap productIndex = null; final String imageLoc = IMAGE_LOCATION; InputStream imageStream; try { imageStream = new FileInputStream(imageLoc); productIndex = decodeSampledBitmapFromResource(getResources(), imageLoc, 400, 400); productIV.setImageBitmap(productIndex); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } […]

将位图转换为android中的jpeg

有没有办法将android.graphics.Bitmap实例转换为android中的jpeg?

Android调整位图保持宽高比

我有一个自定义视图(1066 x 738),我传递的是位图图像(720×343)。 我想缩放位图以适应自定义视图,而不超过父级的边界。 我希望实现这样的目标: 我该如何计算位图大小? 我如何计算新的宽度/高度: public static Bitmap getScaledBitmap(Bitmap b, int reqWidth, int reqHeight) { int bWidth = b.getWidth(); int bHeight = b.getHeight(); int nWidth = reqWidth; int nHeight = reqHeight; float parentRatio = (float) reqHeight / reqWidth; nHeight = bHeight; nWidth = (int) (reqWidth * parentRatio); return Bitmap.createScaledBitmap(b, nWidth, nHeight, true); } […]