标签: bitmap

用里面的位图创建一个位图

我知道 - 标题可能听起来很奇怪.让我解释:

我创建了一个图像来向您展示我正在谈论的内容: 问题

我有一个图像(位图(1)),大小为150w/200h.

现在我需要使位图更大((2)400w/400h),但原始图像必须具有相同的大小.使图像嵌入白色背景中.

我认为解决它的一种方法是:*创建一个大位图*为它创建一个画布*在画布上绘制原始位图*绘制画布*生成画布的位图

对我来说问题是,它必须在后台线程中完成而不绘制视图.我希望你能理解我.

android bitmap bitmapfactory android-canvas

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

将位图像素转换为字节数组失败

我必须将位图的像素转换为短阵列.因此我想:

  • 得到字节
  • 将字节转换为short

这是获取字节的源码:

 public byte[] BitmapToByte(Bitmap source)
 {
     using (var memoryStream = new MemoryStream())
     {
         source.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
         return memoryStream.ToArray();
     }
 }
Run Code Online (Sandbox Code Playgroud)

这不会返回预期的结果.还有另一种转换数据的方法吗?

c# bytearray converter bitmap

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

Android bitmap.setPixel(x,y,color)是传递值的设置

使用Bitmap.create创建位图(25,25,Config.ARGB_8888)

设置一个alpha值小于或等于0xA9的像素会导致像素没有被传入的内容设置.我读了另一个堆栈溢出问题说setHasAlpha(true),我在测试中做了 - 但是仍然没有解决这个问题.

这是我的android测试用例,显示了我的问题:

    public void testSettingBitmaps() {
    Bitmap bitmap = Bitmap.createBitmap(25, 25, Config.ARGB_8888);
    bitmap.setHasAlpha(true);

    int color = 0x00fefefe;
    int x= 0;
    int y = 0;

    for(int alpha = 0xFF000000; alpha != 0x00000000; alpha = alpha - 0x01000000) {
        int colorPlusAlpha = color + alpha;
        bitmap.setPixel(x, y, colorPlusAlpha);  

        //
        // This test succeeds if the bitmap let us set the pixel.
        //
        assertEquals(String.format("Current alpha value: %x, Expected pixel value: %x, Actual pixel value: %x", alpha, colorPlusAlpha, bitmap.getPixel(x, y)), 
                colorPlusAlpha, …
Run Code Online (Sandbox Code Playgroud)

android steganography bitmap

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

返回变量访问器时出现C#"Out of Memory Exception"

当我尝试创建一个Bitmap并通过"get"访问器返回它时,我得到一个Out Of Memory Exception.位图的大小为640x480,深度为Int32.

我怀疑C#垃圾收集器无法删除这些旧的位图,因为它们是在我的变量的访问器中返回的.我有超过2GB的可用空间,所以我不认为这个"小"图像占用太多内存.不幸的是,由于线程锁定问题,我必须重新创建Bitmap(在线程之间锁定图像时出现问题)代码如下:

public Bitmap LiveFrame { get { return GetFrame(500); } }
Run Code Online (Sandbox Code Playgroud)

.....

private Bitmap GetFrame(int timeout)
{
   Bitmap ret = null;
   //CLEyeCameraGetFrame places image data into this._PrivateBitmap
   bool success = CLEyeCameraGetFrame(_Camera, _PtrBmpPixels, timeout);  

   if(success) 
     ret = new Bitmap(this._PrivateBitmap);
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

关于非托管代码的注意事项:CLEyeCameraGetFrame位于非托管DLL中.我在代码中使用Marshal.AllocHGlobal分配_PtrBmpPixels,并且在关闭应用程序时释放之前不要触摸它._PtrBmpPixels用于通过其接受IntPtr参数"scan0"的构造函数创建Bitmap _PrivateBitmap.因此,每当通过CLEyeCameraGetFrame更新_PtrBmpPixels时,_PrivateBitmap也会更新.

我尝试通过在重用之前处理PcitureBox位图来解决这个问题,但这打破了PictureBox的显示.我有两个线程更新两个不同的PictureBox/ImageBoxes:

lock (_CameraLocker)
{
  if (_VideoPlaying)
  {
    try{
         if (pbLiveFeed.Image != null)
            pbLiveFeed.Image.Dispose();

         pbLiveFeed.Image = _Camera.LiveFrame;
         pbLiveFeed.Invalidate();
       }catch (Exception ex) { }
}
Run Code Online (Sandbox Code Playgroud)

....

lock (_CameraLocker)
{
   try{
        if (ibProcessed.Image != …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection bitmap computer-vision

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

如何在Delphi中将颜色减少到指定的数字?

如何在Delphi中将颜色减少到指定的数字(<= 256)?我不想只使用:

 Bmp.PixelFormat := pf8bit;
Run Code Online (Sandbox Code Playgroud)

因为那样我无法控制颜色数量.我不想要抖动,因为我已经知道如何用256或更少颜色抖动图像.

我发现了这个Median Cut实现,但它从1990年开始是纯粹的Pascal,并且:

  1. 不在Delphi中编译
  2. 说它是共享软件并且花费25 Deutche Marks
  3. 看起来(不知何故)不必要的复杂

我想TBitmap32只减少(Graphics32位图类,仅支持32位颜色)到<= 8bit bmp.我不需要减少到15/16bit,我不需要从24或15/16bit图像减少.只需32位=> 8位 -

Delphi我使用:7,2005,XE3.

delphi colors bitmap quantization reduction

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

开始一个Acitivity时不希望的延迟

我正在使用一些Acitivity,它工作得很好.但我有一个奇怪的延迟.

我想通了,这是关于代码的这一部分,我在SDCard中加载存储的图像.

    if(p.getAdress() != null){
    Bitmap bitmap = BitmapFactory.decodeFile(p.getAdress()); 
            new_image.setBackgroundDrawable(null);
            new_image.setImageBitmap(bitmap);
    }
Run Code Online (Sandbox Code Playgroud)

为什么这个简单的代码执行时间太长?

怎么解决?

如果我取消这个代码,一切都按照我的意愿行事.

android bitmap imagebutton

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

为什么我的内存不足?

我有一个300 x 355的图像,大小只有50 kb.我试图用下面的代码解码它:

Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId)
    .copy(Bitmap.Config.ARGB_8888, true);
Run Code Online (Sandbox Code Playgroud)

根据logcat尝试分配10674000字节.为什么这么多?图像只有50 kb.

java android bitmap

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

使用canvas android拉伸图像

你好,我有两个图像,我正在使用画布合并图像

这是下面的代码

      Intent intent = getIntent();

       //bm is the image get from camera
        bm = BitmapFactory.decodeFile(intent.getStringExtra("getdata"));

       //this is simple white text image
        bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.txt_made_hawk_nelson);
        imgSeletedPhoto = (ImageView) findViewById(R.id.imgSelectedPhoto);

        int width = bm.getWidth();
        int height = bm.getHeight();

        int maxWidth = (width > bm1.getWidth() ? width : bm1.getWidth());
        int maxHeight = (height > bm1.getHeight() ? height : bm1.getHeight());


        // calculate the scale - in this case = 0.4f
        float scaleWidth = ((float) maxWidth) / width;
        float scaleHeight = ((float) maxHeight) …
Run Code Online (Sandbox Code Playgroud)

java android image bitmap android-canvas

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

c ++,位图不会显示?

单击鼠标左键时,不会显示位图.我正在使用visual c ++ express

HDC DC, memDC;

switch(message) {
case WM_CREATE:
        hBit1 = LoadBitmap(hInst, "C:\New folder (2)\MyBP1.bmp");
        break;

case WM_LBUTTONDOWN:
            DC = GetDC(hwnd);
            memDC = CreateCompatibleDC(DC);
        SelectObject (memDC, hBit1);
        BitBlt(DC, LOWORD(lParam), HIWORD(lParam), 27, 59, memDC, 0, 0, SRCCOPY);
        ReleaseDC(hwnd, DC);
        DeleteDC(memDC);
        break;
Run Code Online (Sandbox Code Playgroud)

我不确定代码究竟是什么问题.在Visual c ++ express中没有显示错误如果代码完全错误,有人会指出我正确的方向

c++ winapi bitmap

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

从ArrayList释放位图的有效方法

我在ArrayList中存储了一些位图,因为Bitmaps是非常昂贵的资源我想知道是否有一种有效的方法来释放所有Bitmaps,当我不再需要ArrayList或者只是在ArrayList上调用clear就足够了?

arrays android bitmap

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