Tag: 位图

将字节数组解码为已用Java压缩的位图

我正在以下列方式压缩位图 Bitmap bmpSig = getMyBitMap(); int size = bmpSig.getWidth() * bmpSig.getHeight(); ByteArrayOutputStream out = new ByteArrayOutputStream(size); bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); byte[] bytSig = out.toByteArray(); 然后我尝试从字节数组中在Android ImageView中显示图像。 当我这样做时,我得到的图像是完全黑色的图像。 ImageView myImg = (ImageView) findViewById(R.id.img_view); myImg.setImageBitmap(BitmapFactory.decodeByteArray(bytSig, 0, bytSig.length)); 我假设它是因为我在BitmapFactory.decodeByteArray()之前错过了一个步骤来反转jpeg压缩。 或者我误解了压缩是如何工作的?

libgdx如何将BitmapFont缩放到更改屏幕大小?

我想要的是在更改屏幕尺寸时相应地改变尺寸的位图字体。 我的意思是在我的电脑上,字体看起来相当大,但在我的手机上,它是一个难以阅读的小字体。 我可以改变大小,但我希望它在所有屏幕上都看起来相似,而不是在一个屏幕上大而在另一个屏幕上小一些。 这是我的代码,看看我有什么用处: public void render() { //score system scoreFont.setColor(1.0f, 1.0f, 1.0f, 1.0f); scoreBatch.begin(); scoreFont.draw(scoreBatch, Long.toString(getScore()), 10, Gdx.graphics.getHeight() – 10); scoreFont.setScale(3, 3); scoreBatch.end(); } public void resize(int width, int height) { camera.viewportWidth = 450; camera.viewportHeight = 250; camera.update(); stage.setViewport(450, 250, true); stage.getCamera().translate(-stage.getGutterWidth(), -stage.getGutterHeight(), 0); }

android-bitmap低质量问题

我刚创建了一些函数来从相机拍摄照片并将结果图像放入imageview。 而我发现我的拍摄质量非常糟糕。 以下是一些代码: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get(“data”); picture.setImageBitmap(photo); } } View.OnClickListener camerabtnlistener = new View.OnClickListener() { @Override public void onClick(View v) { Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } }; @Override protected void onCreate(Bundle […]

android将3位图保存为1

我有一个拍照的应用程序。 它创建了2个子集位图,使用失真处理这些位图,然后将子集放在原始位置作为叠加层。 有没有办法将所有三个位图保存为一个(如手机屏幕上显示的那样)? 我想将用户在屏幕上看到的内容保存为SD卡上的第四个位图? 我有一种感觉,我做错了。 谢谢 [UPDATE1] @Override public void onDraw(Canvas canvas){ super.onDraw(canvas); Log.e(TAG, “******about to draw bgr “); canvas.drawBitmap(bgr, 0, 0, null); if (isLocked == true && bothCirclesInPlace == true){ if(overLay != null) canvas.drawBitmap(overLay, centreX-radius, centreY-radius, null); if(overLay2 != null) canvas.drawBitmap(overLay2, centreA-radius, centreB-radius, null); }

Android:如何以编程方式仅舍入位图的顶角?

我目前正在使用此代码: @Override public Bitmap transform(Bitmap source) { Bitmap result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(result); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, source.getWidth(),source.getHeight()); final RectF rectF = new RectF(rect); final float scale = context.getResources().getDisplayMetrics().density; final float roundDp = 10 * scale; […]

Android java百分比位图两个图像之间的像素差异

我需要在Android上的Java中计算两个图像之间的像素差异。 问题是我的代码返回不准确的结果。 例如,我有3个非常相似的图片,但它们返回显着不同的结果,用于比较每个图片:pic1与pic2 = 1.71%; pic1 vs pic3 = 0.0045%; pic2 vs pic3 = 36.7%。 BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.ARGB_8888; opt.inSampleSize = 5; Bitmap mBitmap1 = BitmapFactory.decodeFile(“/sdcard/pic1.jpg”, opt); Bitmap mBitmap2 = BitmapFactory.decodeFile(“/sdcard/pic2.jpg”, opt); int intColor1 = 0; int intColor2 = 0; for (int x = 0; x < mBitmap1.getWidth(); x++) { for […]

如何从Android应用程序中的异步任务返回位图

好的,所以这段代码就在Android Developer网站上,它将ImageView设置为Bitmap : class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private int data = 0; public BitmapWorkerTask(ImageView imageView) { // Use a WeakReference to ensure the ImageView can be garbage collected imageViewReference = new WeakReference(imageView); } // Decode image in background. @Override protected Bitmap doInBackground(Integer… params) { data = params[0]; return decodeSampledBitmapFromResource(getResources(), data, […]

提高Android Bitmap上getpixel()和setpixel()的速度

所有, 在我注意到getPixel和setPixel有多慢(不确定哪一个,猜两者都不是涡轮增压)后,我快速编写了一个使用int[]数组来处理位图操作的Bitmap容器。 已经 – 它明显更快,但这还不够。 请问您能如何进一步加快速度? 我的想法是通过setPixel函数跟踪“脏”的内容,并在调用getBitmap()时仅更新Bitmap这一部分…虽然不清楚如何设置setPixels参数(具有偏移和步幅的东西)猜测)。 还 – 任何更快的食谱? 提前感谢您的帮助! import android.graphics.Bitmap; public class DrawableBitmapContainer { private Bitmap image; private int width, height; private int[] pixels; public DrawableBitmapContainer(Bitmap _source ){ image = _source; width = image.getWidth(); height = image.getHeight(); pixels = new int[width*height]; image.getPixels(pixels,0,width,0,0,width,height); } public int getPixel(int x,int y){ return pixels[x+y*width]; } public […]

Android:调整位图大小而不会降低质量

在发布之前,我真的在整个网络上搜索过。 我的问题是我不能在不损失图像质量的情况下调整位图大小(质量非常差并且像素化)。 我从相机获取位图,然后我必须缩小它,所以我可以更快地上传到服务器。 这是进行采样的function public Bitmap resizeBitmap(Bitmap bitmap){ Canvas canvas = new Canvas(); Bitmap resizedBitmap = null; if (bitmap !=null) { int h = bitmap.getHeight(); int w = bitmap.getWidth(); int newWidth=0; int newHeight=0; if(h>w){ newWidth = 600; newHeight = 800; } if(w>h){ newWidth = 800; newHeight = 600; } float scaleWidth = ((float) newWidth) / […]

即使我回收位图,内存使用量也不会减少

我有A和B活动。 当我从活动A开始活动B时,我在活动B上设置静态位图变量。我在屏幕上显示该位图并旋转它。 当活动B完成后,我在onDestroy()方法上回收所有位图,但内存使用量没有减少。 @Override protected void onDestroy() { super.onDestroy(); if (bitmap90 != null) { bitmap90.recycle(); bitmap90 = null; } if (bitmap180 != null) { bitmap180.recycle(); bitmap180 = null; } if (bitmap270 != null) { bitmap270.recycle(); bitmap270 = null; } if (mBitmap != null) { mBitmap.recycle(); mBitmap = null; } if (((BitmapDrawable) ivOriginal.getDrawable()).getBitmap() != null) { […]