标签: bitmap

Android以编程方式拍摄屏幕截图

首先,我正在编写一个根应用程序,因此root权限不成问题.我搜索过并搜索过,发现很多代码对我来说从来没有用过,这是我到目前为止拼凑起来的东西.当我说sorta我的意思是它在我的/sdcard/test.png上生成一个图像但是该文件是0字节,显然无法查看.

public class ScreenShot extends Activity{

View content;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.blank);
    content = findViewById(R.id.blankview);
    getScreen();
}

private void getScreen(){
    Bitmap bitmap = content.getDrawingCache();
    File file = new File("/sdcard/test.png");
    try 
    {
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, ostream);
        ostream.close();
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

任何有关如何通过代码在Android屏幕截图拍摄的帮助将非常感谢谢谢!

===编辑===

以下是我正在使用的所有图像是在我的SD卡上制作的,不再是0bytes但是整个东西都是黑色的,上面没有任何内容.我已将活动绑定到我的搜索按钮,所以当我在手机上的某个地方时,我长按搜索,它应该拍摄屏幕截图但我只是得到一个黑色图像?一切都设置透明,所以我认为它应该抓住屏幕上的任何东西,但我只是一直变黑

表现

<activity android:name=".extras.ScreenShot"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:noHistory="true" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH_LONG_PRESS" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android caching screenshot image bitmap

46
推荐指数
2
解决办法
4万
查看次数

Android平铺位图

我正在尝试在Android中加载我想要平铺的位图.我目前在视图中使用以下内容来显示位图:

canvas.drawBitmap(bitmap, srcRect, destRect, null)
Run Code Online (Sandbox Code Playgroud)

我本质上想在我的应用程序中使用此位图作为背景图像,并希望在X和Y方向上重复位图.

我已经看到了在TileMode.REPEAT不变BitmapShader类,但我不知道这是用于重复实际的位图或用于应用过滤器位图.

android bitmap

45
推荐指数
5
解决办法
6万
查看次数

Canvas:尝试在android中使用循环位图android.graphics.Bitmap

我正在处理裁剪图像类,但遇到了回收的位图问题:

03-02 23:14:10.514: E/AndroidRuntime(16736): FATAL EXCEPTION: Thread-1470
03-02 23:14:10.514: E/AndroidRuntime(16736): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@428e5450
03-02 23:14:10.514: E/AndroidRuntime(16736):    at android.graphics.Canvas.throwIfRecycled(Canvas.java:1026)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at android.graphics.Canvas.drawBitmap(Canvas.java:1096)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at android.graphics.Bitmap.createBitmap(Bitmap.java:604)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at eu.janmuller.android.simplecropimage.CropImage$1.prepareBitmap(CropImage.java:630)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at eu.janmuller.android.simplecropimage.CropImage$1.run(CropImage.java:636)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at eu.janmuller.android.simplecropimage.CropImage$6.run(CropImage.java:343)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at eu.janmuller.android.simplecropimage.Util$BackgroundJob.run(Util.java:175)
03-02 23:14:10.514: E/AndroidRuntime(16736):    at java.lang.Thread.run(Thread.java:856)
Run Code Online (Sandbox Code Playgroud)

出现错误的行是mScale = 256.0F / mBitmap.getWidth();(第630行),请搜索此行以获取更多信息.

注意,在添加checkRotation()函数之前,代码没有此错误.并且该函数返回一个位图,该位图导致了异常.这是提示

此外,在我复制原始位图并回收旧位图的函数中,所以它不应该是问题的根源,建议您不要逐个查看代码,而是搜索关键字.谢谢你的帮助.

/**
 * The activity can crop specific region of interest …
Run Code Online (Sandbox Code Playgroud)

android bitmap recycle imageview

45
推荐指数
4
解决办法
6万
查看次数

在通知Android中加载来自网址的图片

在我的Android应用程序中,我想动态设置将从URL加载的通知图标.为此,我使用setLargeIcon了NotificationBuilder的属性receiver.我提到了许多链接并尝试了各种解决方案,但无法获得所需的输出.虽然我从url下载了该图像并在通知中设置了该位图,但它并未显示.相反,它将setSmallIcon图像显示为大图标.我不知道我哪里错了.我在这里发布我的代码.请帮我解决这个问题.谢谢.

码:

@SuppressLint("NewApi")
public class C2DMMessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
            Log.e("C2DM", "received message");
            final String fullName = intent.getStringExtra("message");
            final String payload1 = intent.getStringExtra("message1");
            final String payload2 = intent.getStringExtra("message2");
            final String userImage = intent.getStringExtra("userImage");

            Log.e("userImage Url :", userImage); //it shows correct url

            new sendNotification(context)
                    .execute(fullName, payload1, userImage);
        }
    }

private class sendNotification extends AsyncTask<String, Void, Bitmap> {

        Context ctx;
        String message; …
Run Code Online (Sandbox Code Playgroud)

android bitmap android-notifications android-notification-bar google-cloud-messaging

44
推荐指数
6
解决办法
5万
查看次数

如何在android中更改位图图像颜色?

我正在开发一个Android应用程序,在其中我将图像设置为imageview.现在编程我想改变位图图像颜色.假设我的图像最初是红色的,现在我需要将其更改为橙色.我怎样才能做到这一点?请帮忙.

这是我的代码.我设法改变了不透明度,但我不知道如何改变颜色.

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView iv = (ImageView) findViewById(R.id.img);
        Drawable d = getResources().getDrawable(R.drawable.pic1);
        Bitmap mNewBitmap = ((BitmapDrawable)d).getBitmap();
        Bitmap nNewBitmap = adjustOpacity(mNewBitmap);
        iv.setImageBitmap(nNewBitmap);
    }

    private Bitmap adjustOpacity( Bitmap bitmap ) {
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        Bitmap dest = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        int[] pixels = new int[width * height];
        bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
        dest.setPixels(pixels, 0, width, 0, 0, width, height);
        return dest;
    } 
Run Code Online (Sandbox Code Playgroud)

android bitmap

43
推荐指数
6
解决办法
7万
查看次数

减少图像大小而不会失去其在android中的质量

如何在不损失android质量的情况下减小图像大小.
我的项目中有一个ImageView,我必须在其中放入一个更大尺寸的图像.
我是android的新手.
请帮忙.

android image bitmap

43
推荐指数
2
解决办法
7万
查看次数

查找BitmapImage的特定像素颜色

我有一个WPF BitmapImage,我从.JPG文件加载,如下所示:

this.m_image1.Source = new BitmapImage(new Uri(path));
Run Code Online (Sandbox Code Playgroud)

我想查询特定点的颜色.例如,像素(65,32)处的RGB值是多少?

我该怎么做?我采取这种方法:

ImageSource ims = m_image1.Source;
BitmapImage bitmapImage = (BitmapImage)ims;
int height = bitmapImage.PixelHeight;
int width = bitmapImage.PixelWidth;
int nStride = (bitmapImage.PixelWidth * bitmapImage.Format.BitsPerPixel + 7) / 8;
byte[] pixelByteArray = new byte[bitmapImage.PixelHeight * nStride];
bitmapImage.CopyPixels(pixelByteArray, nStride, 0);
Run Code Online (Sandbox Code Playgroud)

虽然我会承认有一些猴子看到,猴子继续这个代码.无论如何,是否有一种直接的方法来处理这个字节数组转换为RGB值?

wpf bitmap image-processing

42
推荐指数
5
解决办法
5万
查看次数

System.Drawing.Image.FromFile()上的Out of Memory异常

我有一个图像上传器和裁剪器,它创建缩略图,我偶尔会在以下行中获得Out Of Memory异常:

Dim bm As Bitmap = System.Drawing.Image.FromFile(imageFile)
Run Code Online (Sandbox Code Playgroud)

错误的发生是微小的,非常罕见,但我总是想知道可能导致它的原因.imageFile变量只是一个Server.MapPath到图像的路径.

我很好奇,如果有人以前遇到过这个问题,他们是否有任何想法可能导致它?这可能是图像的大小吗?

我可以在必要时发布代码以及我所拥有的任何支持信息,但是我很乐意听到人们对此的看法.

asp.net image bitmap

41
推荐指数
3
解决办法
7万
查看次数

有没有一种很好的方法来转换BitmapSource和Bitmap?

据我所知,从BitmapSource转换为Bitmap的唯一方法是通过不安全的代码...像这样(来自Lesters WPF博客):

myBitmapSource.CopyPixels(bits, stride, 0);

unsafe
{
  fixed (byte* pBits = bits)
  {
      IntPtr ptr = new IntPtr(pBits);

      System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(
        width,
        height,
        stride,
        System.Drawing.Imaging.PixelFormat.Format32bppPArgb,ptr);

      return bitmap;
  }
}
Run Code Online (Sandbox Code Playgroud)

做反过来:

System.Windows.Media.Imaging.BitmapSource bitmapSource =
  System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
    bitmap.GetHbitmap(),
    IntPtr.Zero,
    Int32Rect.Empty,
    System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
Run Code Online (Sandbox Code Playgroud)

框架中有更简单的方法吗?它不在那里的原因是什么(如果不是)?我认为它相当实用.

我需要它的原因是因为我使用AForge在WPF应用程序中执行某些图像操作.WPF希望显示BitmapSource/ImageSource,但AForge可以在Bitmaps上运行.

.net c# wpf bitmap bitmapsource

40
推荐指数
2
解决办法
6万
查看次数

Android:如何将整个ImageView转换为Bitmap?

我的应用程序显示不同比例的图像,内部(centerInside)imageView调整大小.我需要的是从ImageView创建包括背景的位图(在这种情况下为黑色).

所以例如我有设备屏幕320x480,全屏imageView图像大小调整为280x480.我怎么能从它获得320x480位图?

在这个imageview的顶部,我有一些我不想包含在位图中的徽标或按钮,它们就像在顶层.我需要的只是带有图像的位图和来自某些边的黑色边框.

android image screen bitmap imageview

40
推荐指数
3
解决办法
11万
查看次数