标签: bitmap

在循环中创建位图时出现内存溢出异常

我必须从许多图像中导入大量的图像裁剪,这些图像都已准备好存储在我的数据库中.我每次尝试使用语句并处理我的位图对象.但我仍然得到一个内存溢出异常,我的系统内存不足.

以下是我正在做的一些示例代码.

public void CropImage(List<ImageClass> data)
{
    foreach (var obj in data)
    {
        //I have a data base method that returns a data object that 
        //contains the file bytes of the image id in data: 'file'
        //My List<ImageClass> data contains an ID of the original image
        //start x,y coords for the upper left corner of the rectangle,
        //and the width and height of the rectangle.

        Image img = Image.FromStream(new MemoryStream(file.Data));
        Bitmap bmp = new Bitmap((Bitmap)img);
        Rectangle cropArea = new Rectangle(obj.x_coordinate, …
Run Code Online (Sandbox Code Playgroud)

c# memory imaging bitmap overflow

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

从onDraw()绘制到创建的位图

我正在尝试绘制到Bitmap,这样我就可以将自定义视图放在imageView中.onDraw方法中的代码是:

    public void onDraw(Canvas canvas) {     

    Bitmap drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);       
    canvas.setBitmap(drawGraph);    
    canvas.drawBitmap(drawGraph, 0, 0, bgPaint);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我尝试以这种方式使用位图,我只是得到一个黑屏.我知道如果我不尝试绘制位图,我的代码的其余部分就会显示.

如果我注释掉这条线

canvas.setBitmap(drawGraph);
Run Code Online (Sandbox Code Playgroud)

然后一切都很完美,所以这是问题,但我不知道为什么.

我哪里错了?

android bitmap ondraw

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

将位图保存在TScrollBox中的固定位置

我把各种各样的帧放在TScrollBox上.滚动时,它们正在正确滚动.现在我想添加一个保留在固定位置的位图.我尝试了一个与TScrollBox具有相同父级(TPanel)的TImage.即使我使用BringToFront,我也看不到分配给TImage的位图.

有人可以帮帮我吗?

提前致谢,

阿诺德

delphi fixed bitmap tscrollbox

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

位图不正确; 这怎么可能

我试图用C++代码分析车牌.重点不是如何快速实现目标,因为我想自己去创建这个C++代码并学习如何实现.

问题:

位图文件中的字节不加起来!位图文件: 在此输入图像描述 http://ictmdeklerk.nl/cor.bmp

为什么他们不加起来:

我正在使用24位位图图像(*.BMP文件).我知道位图是用BMPFILEHEADER和BMPINFOHEADER构建的,它占用了54个字节.

现在,图像宽1350像素,高740像素,产生999000像素.

因为文件是24位,所以每个像素有3个字节.图像需要999000*3 = 2997000字节.但是BMPINFOHEADER中的图像大小(biSizeImage)表示图像是2998480字节!文件大小为2.998.534字节 - 确实54个头字节= 2.998.480.所以标题仍然是54个字节.那里没有额外的元数据.当我每像素除2.998.480/3字节时,得到999493,33像素!它甚至不是一个圆形的数字!

这让我疯了.Windows如何知道如何在不移动像素或颜色或任何东西的情况下显示此图像?

谁能解释一下这些额外的像素/字节来自哪里?以及如何处理它们?

提前致谢!

bitmap filesize pixels image-size

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

如何确定GIF中的像素是否透明(.NET)

如何确定GIF图像中的特定像素在C#中是否透明?我可以在Bitmap中看到MakeTransparent方法,但没有什么可以确定它是否已经是透明的.

谢谢.

c# graphics bitmap gif

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

如何创建ARGB_8888像素值?

假设我想创建一个像素值数组,以传递到此处createBitmap描述的方法中.我在0 - 0xff范围内有三个int值.如何将它们转换为不透明像素?r, g, bp

alpha通道是进入高字节还是低字节?

我搜索了文档,但它只说明:

每个像素存储在4个字节上.每个通道(RGB和alpha为半透明)以8位精度(256个可能的值)存储.这种配置非常灵活,并提供最佳质量.应尽可能使用它.

那么,如何编写这个方法呢?

int createPixel(int r, int g, int b)
{
  return ?
}
Run Code Online (Sandbox Code Playgroud)

java android pixel bitmap

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

混淆XMM寄存器的位图

对不起我没有好头衔......

我正在读这个帖子: SSE中的矢量矩阵乘法

原始海报有以下代码

// xmm0 = (v0,v1,v2,v3)
movups xmm0, [eax]

// xmm0 = (v0,v0,v0,v0)
// xmm1 = (v1,v1,v1,v1)
// xmm2 = (v2,v2,v2,v2)
// xmm3 = (v3,v3,v3,v3)
shufps xmm3, xmm0, 255
shufps xmm2, xmm0, 170
shufps xmm1, xmm0, 85
shufps xmm0, xmm0, 0
Run Code Online (Sandbox Code Playgroud)

有人说以下:

但是根据手册真正发生了什么:(a,b,c,d)意味着a是0到31位,b是32到63位等等

// xmm0 = (v0,v1,v2,v3)
movups xmm0, [eax]

// xmm0 = (v0, v0, v0, v0)
shufps xmm0, xmm0, 0
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义,因为在线性数组模型中[elt0,elt1,elt2,....] elt0是Array [0].

令我困惑的是,根据手册,xmm寄存器的位图是[127 ... 0](见下图).

我就像看着位图的原始海报,并认为[elt0,elt2,elt3,elt4]的最左边是"11"位.

所以如果我想xmm0只包含v0

shufps xmm0, xmm0, 0xFF  // 11 11 11 11 …
Run Code Online (Sandbox Code Playgroud)

sse bitmap

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

android使用异步http连接来获取图像位图

我正在尝试使用异步请求从URL中获取图像,以防止URL挂起.这是我正在使用的代码片段

private void setImg(final ImageView im, String url){
    AsyncHttpClient client = new AsyncHttpClient();
    client.get(url, new AsyncHttpResponseHandler(){
        public void onSuccess(String response){
            try{
                byte[] imageAsBytes = response.getBytes();
                im.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
                im.refreshDrawableState();
            } catch(Throwable e){
                e.printStackTrace();
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这总是在logcat中显示此警告

12-29 01:55:33.043: D/skia(14414): --- SkImageDecoder::Factory returned null

我找不到合适的理由.有帮助吗?

android bitmap android-imageview android-asynctask

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

如何在它上绑定点集(自定义形状)和触摸事件

我现在可以使用此链接获取我的位图点集(作为数组) 我的问题是我如何将这些点绑定为形状/区域.意味着当用户触摸我的有界点的区域时,我想根据它移动对象(形状).上面的彩色位图的链接返回点(它删除透明部分),只有彩色的部分点作为数组返回.这是我的代码:

1)CustomSahpe.java

public class CustomShape {
private final Context context;

Bitmap bitmap;
int width, height;
int[] pixels;
private final ArrayList<Point> points = new ArrayList<Point>();
public CustomShape(Context context) {
    // TODO Auto-generated constructor stub
    // super(context);
    this.context = context;
    bitmap = BitmapFactory.decodeResource(context.getResources(),
            R.drawable.ic_menu_balloon);
    width = bitmap.getWidth();
    height = bitmap.getHeight();
    pixels = new int[width * height];
    bitmap.getPixels(pixels, 0, width, 0, 0, width, height);        
    getActualBitmap();
}

public ArrayList<Point> getPoints(){
    return points;
}

public void getActualBitmap() {
    for (int x = …
Run Code Online (Sandbox Code Playgroud)

android canvas bitmap

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

Android ListView行背景导致OutOfMemory问题

我有一个片段,它从Web服务中提取数据并在ListView中显示.我有10个不同的选择器,可以用于行背景.一旦循环就重复背景.

我面临的问题是设备(Galaxy Nexus!)无法处理显示所有这些背景.当我通过setbackgroundResource设置后台时,操作系统不断调用GC来释放内存,这使得ListView滚动非常不稳定.

所以我尝试缓存使用的Drawables.我看到了一个改进,但设备最终会抛出一个OutOfMemory异常因为缓存了多少Drawables.为了举例说明有多少是缓存的,我需要所有10个选择器,每个选择器包含两个drawable,加上第一个和最后一个,因为它们是不同的.这是内存中的24个drawable.

现在,我认为它可能是我正在使用的图像的大小,我需要缩小它们并按比例拉伸,但我不确定这是否会起作用.

有什么建议?我已经花了几天时间在这个不停的工作,并没有找到一个可行/近距离的解决方案.

谢谢

亚当

android listview background bitmap out-of-memory

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