标签: bitmap

在NetworkOnMainThreadException中将url转换为位图

我想将某些URL中的图像动态添加到线性布局中.运行该段代码时出现错误无法启动活动

ComponentInfo:位于com.example的com.example.star.example.CompampleActivity.insertPhoto(CompinfoActivity.java:50)的com.example.star.example.CompinfoActivity.getBitmapFromURL(CompinfoActivity.java:70)中的android.os.NetworkOnMainThreadException. star.example.CompinfoActivity.onCreate(CompinfoActivity.java:38)

请帮忙.这是我下面活动的代码.

public class CompinfoActivity extends AppCompatActivity {

Dialog dialog;
LinearLayout myGallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_compinfo);

    dialog = new Dialog(this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.activity_compinfopopup);
    dialog.getWindow().getAttributes().width = AbsListView.LayoutParams.MATCH_PARENT;
    dialog.getWindow().getAttributes().height = AbsListView.LayoutParams.WRAP_CONTENT;
    dialog.show();

    myGallery = (LinearLayout) dialog.findViewById(R.id.mygallery);
    myGallery.addView(insertPhoto("http://example.com/a.png"));
    myGallery.addView(insertPhoto("http://example.com/b.png"));
    myGallery.addView(insertPhoto("http://example.com/c.png"));
    myGallery.addView(insertPhoto("http://example.com/d.png"));
    new MyTask().execute();



}

View insertPhoto(String path){
    Bitmap bm;
    bm =  getBitmapFromURL(path);
    LinearLayout layout = new LinearLayout(getApplicationContext());
    layout.setLayoutParams(new AbsListView.LayoutParams(250, 250));
    layout.setGravity(Gravity.CENTER);

    ImageView imageView = new ImageView(getApplicationContext());
    imageView.setLayoutParams(new AbsListView.LayoutParams(220, 220));
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setImageBitmap(bm);

    layout.addView(imageView);
    return layout;
}


public static Bitmap …
Run Code Online (Sandbox Code Playgroud)

url android bitmap

1
推荐指数
1
解决办法
9380
查看次数

view.getDrawingCache()仅在Samsung Galaxy note 8.0中返回null?

**注意:(对于书呆子)请勿将其标记为重复的问题.

  1. 是的,我知道它是什么NullPointerException.
  2. 是的我尝试view.getDrawingCache从Stackoverflow返回null答案.

我正在尝试单独为平板电脑开发绘图应用程序.我创建了一个用于绘图的自定义视图.自定义视图包含在内部ScrollView以使用户滚动图像(如果它太大).

activity_drawing.xml

 <RelativeLayout
            android:id="@+id/container"
            android:layout_marginLeft="@dimen/activity_correction_answer_horizontal_margin"
            android:layout_marginRight="@dimen/activity_correction_answer_horizontal_margin"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <in.com.hourglass.views.ImageScroll   
                android:layout_centerInParent="true"
                android:id="@+id/image_scroll"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <FrameLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <ImageView
                        android:id="@+id/image"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <in.com.hourglass.views.DrawView
                        android:id="@+id/draw_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </FrameLayout>
            </in.com.hourglass.views.ImageScroll>
  </RelativeLayout> 
Run Code Online (Sandbox Code Playgroud)

因此,当完成视图上的绘图时,用户可以保存图像并进行思考Canvas.

我正在调整图像大小并将其附加到自定义视图Bitmap,并将它们保存为单个图像.整个过程很好用三星平板电脑10.1.

但是当我尝试在较低屏幕设备samsung Note 8.0中测试相同的时候.view.getDrawingCache()给我一个空的Bitmap.

我已经调试并检查了自定义视图的宽度和高度,它们指定了宽度和高度的scrollview,并且customview中也有一个位图.

Bitmap尽可能地重用以减少app堆内存使用量.

我知道,我必须对此警告采取措施:

W/View: View too large to fit into drawing cache, needs 4380332 bytes, only 4096000 available
Run Code Online (Sandbox Code Playgroud)

错误日志:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: …
Run Code Online (Sandbox Code Playgroud)

android bitmap scrollview android-canvas

1
推荐指数
1
解决办法
1815
查看次数

C#中的异步图像处理

我需要异步操作位图像素.有Bitmap和WriteableBitmap.我需要这样的东西:

public async Task<Bitmap> ProcessBitmap(Bitmap bitmap)
{
   // operate on bitmap asynchronously
   return newBitmap;
}
Run Code Online (Sandbox Code Playgroud)

我想使用WriteableBitmap并将其转换为流并使用流异步方法,但PixelBuffer属性在WPF和WinForms中似乎都不可用.我该怎么做?我也可以在某些情况下使用Parallel.For但是如何获得结果呢?

c# wpf asynchronous bitmap

1
推荐指数
1
解决办法
761
查看次数

Android - 如何将位图列表作为参数传递给另一个Activity

我有一个活动中的位图列表,我通过异步方法.现在我需要将我的位图列表传递给另一个活动.

这是我试过的代码,但给了我一个错误......

 List<Bitmap> result = bitmapResult
 Intent intent = new Intent(PhotoList.this,ImageSlider.class);
 intent.putExtra("bitmapList", result);
 startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误.

Cannot resolve method 'putExtra(java.lang.String, java.util.List<android.graphics.Bitmap>)'
Run Code Online (Sandbox Code Playgroud)

这样做的最佳做法是什么?我如何从新活动中检索List?

提前致谢.

java android bitmap android-studio

1
推荐指数
1
解决办法
613
查看次数

将RAW字节数据转换为位图

我正在使用ADB截取android设备的屏幕截图,并将屏幕截图作为原始字节数据接收。

我知道通过的原始字节数据的格式为rgba

红色为偏移量0,绿色为偏移量8,蓝色为偏移量16,Alpha偏移量为24,每个值为1个字节。这构成了整个字节数组。

我正在尝试将此字节数组转换为C#中的位图,并且在大多数情况下都可以正常工作,除了看起来带有“蓝色调”的事实外,图像在各个方面看起来都是正确的-着色已关闭。

以下是我用来转换原始字节数据的代码:

int WriteBitmapFile(string filename, int width, int height, byte[] imageData)
    {
        using (var stream = new MemoryStream(imageData))
        using (var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb))
        {
            BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0,
                                                            bmp.Width,
                                                            bmp.Height),
                                              ImageLockMode.WriteOnly,
                                              bmp.PixelFormat);
            IntPtr pNative = bmpData.Scan0;

            Marshal.Copy(imageData, 0, pNative, imageData.Length);

            bmp.UnlockBits(bmpData);

            bmp.Save(filename);
        }

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

我在这篇文章中读到,这可能与实际rgba值的字节顺序有关。如您在上面的代码中看到的,我尝试将bmpData.Scan0强制转换为int *,但它仍然带有蓝色调。

我为现在可以做的事情以正确的颜色使图像动摇不已。我假设它读取的是红色的蓝色和蓝色的红色,反之亦然。

我以为我可以操纵原始字节数据,以便在将其转换为位图时按正确的字节顺序进行操作,但是我不确定该如何去做。

有什么建议么?

c# android bitmap image-processing

1
推荐指数
1
解决办法
7006
查看次数

使用布局充气器将外部XML布局转换为位图

所以我有以下布局叫做demo_text.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:id="@+id/screen">

<TextView
    android:id="@+id/textToDisplay"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="Hello World"
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我想将此demo_text转换为Bitmap.这是我的onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    View inflatedFrame = getLayoutInflater().inflate(R.layout.demo_text, null);
    FrameLayout frameLayout = (FrameLayout) inflatedFrame.findViewById(R.id.screen) ;
    frameLayout.setDrawingCacheEnabled(true);
    frameLayout.buildDrawingCache();
    Bitmap bm = frameLayout.getDrawingCache();

}
Run Code Online (Sandbox Code Playgroud)

我希望位图是整个布局,但Bitmap总是返回null.

layout android views bitmap

1
推荐指数
1
解决办法
2013
查看次数

如何在Android中将位图转换为字节数组并将字节数组转换为位图?

我将位图转换为字节数组,将字节数组转换为位图,但是当我必须在ImageView中显示转换后的字节数组时,它将显示带有黑角的图像,而没有以PNG格式显示。我想以PNG格式显示图片,该怎么办?

将字节数组转换为位图后的图像显示

这是位图到字节数组转换和字节数组到位图代码:

位图以PNG压缩格式转换为字节数组:

public byte[] convertBitmapToByteArray(Bitmap bitmap) {
    ByteArrayOutputStream stream = null;
    try {
        stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);

        return stream.toByteArray();
    }finally {
        if (stream != null) {
            try {
                stream.close();
            } catch (IOException e) {
                Log.e(Helper.class.getSimpleName(), "ByteArrayOutputStream was not closed");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并将字节数组转换为位图为:

BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
Run Code Online (Sandbox Code Playgroud)

java arrays android bitmap

1
推荐指数
1
解决办法
3105
查看次数

如何制作像超级一样的标记标签?

我想在我的标记旁边的超级应用程序中显示标记.如何在谷歌地图中制作这样的标签?

我已经尝试添加标题和片段了.但它不是我非常期待的东西.

 mMap.addMarker(new MarkerOptions()
                        .position(MELBOURNE)
                        .title("6 min away")
                        .snippet("Pick up point ")
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.pickup_2x)));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这就是@Nirmal回答的问题.它仍然不是我想要的 这就是@Nirmal回答的问题. 它仍然不是我想要的

java android google-maps bitmap google-maps-markers

1
推荐指数
1
解决办法
719
查看次数

如何将URI转换为位图?

我正在制作一个图像过滤器应用程序,在应用过滤器之前,我将图像裁剪为正方形,我可以使用Soundcloud库像这样裁剪图像:-

private void beginCrop(String sources) {
    img_name = "cropped"+System.currentTimeMillis();
    Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"+System.currentTimeMillis()));
    Uri source = Uri.parse("file://"+sources);
    Crop.of(source, destination).withAspect(200,200).start(this);
}

private void handleCrop(int resultCode, Intent result) {
    if (resultCode == RESULT_OK) {
        Toast.makeText(this,Crop.getOutput(result).toString(), Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(AlbumActivity.this,FilterImageActivity
                .class);
        intent.putExtra("output_image",Crop.getOutput(result).toString());
        startActivity(intent);
    } else if (resultCode == Crop.RESULT_ERROR) {
        Toast.makeText(this, Crop.getError(result).getMessage(), Toast.LENGTH_SHORT).show();
    }
}}
Run Code Online (Sandbox Code Playgroud)

以及下一个活动是FilterImageActivity.java:-

     @Override
    protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_filter_image);

        String uri = getIntent().getStringExtra("output_image");
        setImageDir(uri);
}
Run Code Online (Sandbox Code Playgroud)

和功能setImageDir():-

 private void setImageDir(String uri)
    {
        Bitmap bitmap = …
Run Code Online (Sandbox Code Playgroud)

java android crop bitmap nullpointerexception

1
推荐指数
1
解决办法
8832
查看次数

如何计算位图大小?

开始研究专门针对Windows的屏幕捕获软件.在MSDN上查看捕获图像的示例时,我发现自己有点困惑.

当我提到不包含与实际文件相关联的标题等的位图的大小时,请记住.我在谈论原始像素数据.我本以为应该是公式(width*height)*bits-per-pixel.但是,根据示例,这是计算大小的正确方法:

DWORD dwBmpSize = ((bmpScreen.bmWidth * bi.biBitCount + 31) / 32) * 4 * bmpScreen.bmHeight;
Run Code Online (Sandbox Code Playgroud)

和或: ((width*bits-per-pixel + 31) / 32) * 4 * height

我不明白为什么有额外的计算涉及31,324.也许填充?我不确定,但任何解释都会非常感激.我已经尝试过谷歌搜索,但没有找到任何特别有用的结果.

c++ math winapi bitmap

1
推荐指数
1
解决办法
1038
查看次数