Tag: 位图

如何从字节数组创build位图?

我search了关于字节数组的所有问题,但是我总是失败。 我从来没有编码C#我在这方面是新的。 你能帮我怎么从字节数组中创build图像文件。 这是我的函数,它存储字节数组名为imageData public void imageReady( byte[] imageData, int fWidth, int fHeight))

使用JNI和NDK旋转位图

背景: 我已经决定,由于位图占用大量内存,容易造成内存不足的错误,所以我将在C / C ++代码上花费大量的内存。 我用来旋转位图的步骤是: 读取位图信息(宽度,高度) 将位图像素存储到数组中。 回收位图。 创build一个相反大小的新位图。 把像素放入新的位图。 释放像素并返回位图。 问题: 即使一切似乎运行没有任何错误,输出图像不是原始的旋转。 事实上,它完全毁了它。 旋转应该是逆时针方向,90度。 示例(截图放大)我得到: 所以,正如你所看到的,不仅颜色变得诡异,而且尺寸与我所设定的不符。 这里真的很奇怪 也许我不读/正确地把数据? 当然这只是一个例子。 只要设备有足够的内存来保存它,代码就可以在任何位图上正常工作。 另外,我可能想对位图执行其他操作,而不是旋转它。 我创build的代码: Android.mk文件: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := JniTest LOCAL_SRC_FILES := JniTest.cpp LOCAL_LDLIBS := -llog LOCAL_LDFLAGS += -ljnigraphics include $(BUILD_SHARED_LIBRARY) APP_OPTIM := debug LOCAL_CFLAGS := -g cpp文件: #include <jni.h> #include […]

回收ImageView的位图

我有这样的东西: Bitmap.Config conf = Bitmap.Config.ARGB_8888; WeakReference<Bitmap> bm = new WeakReference<Bitmap>(Bitmap.createBitmap(3000 + 3000, 2000, conf)); Canvas canvas = new Canvas(bm.get()); canvas.drawBitmap(firstBitmap, 0, 0, null); canvas.drawBitmap(bm, firstBitmap.getWidth(), 0, null); imageView.setImageBitmap(bm); 而且我将这个应用于10多个逐一创build的imageView。 每当我创build新的ImageView,我想从第一个回收'bm'对象,导致这个代码在那里,导致我的堆越来越多,然后抛出OutOfMemoryError ,所以我做: bm.recycle() 在将Bitmap(bm)设置为imageView对象之后。 这会导致ImageView的canvas想要绘制循环位图的exception。 什么是回收已经被放在ImageView上的图像的位图的方式? Thanksb

将位图转换为文件

我明白,使用BitmapFactory可以将文件转换为位图,但有什么办法将位图图像转换为文件?

VideoView getDrawingCache正在返回黑色

所以我试图做一个VideoView的屏幕截图。 我想最简单的方法是: videoView.setDrawingCacheEnabled(true); 那么当我需要截图的时候 Bitmap screenshot = videoView.getDrawingCache(); 但是由于某种原因,我每次得到的位图都是黑色的。 任何人都有这个成功吗? 我也试过: Bitmap bitmap = Bitmap.createBitmap(videoView.getWidth(), videoView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); videoView.draw(canvas); 但是,再一次,这给我一个黑色的形象。 我可以看到VideoView在Android javadoc中几乎没有logging。 任何帮助?

查找BitmapImage的特定像素颜色

我有一个WPF的BitmapImage,我从一个.JPG文件加载,如下所示: this.m_image1.Source = new BitmapImage(new Uri(path)); 我想查询什么颜色是在特定的点。 例如,像素(65,32)处的RGB值是多less? 我如何去做这件事? 我正在采取这种做法: 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); 虽然我会承认有一点猴子看,猴子会继续这个代码。 无论如何,是否有一个简单的方法来处理这个字节数组转换为RGB值?

使用entity framework6从SQL Server保存并检索图像(二进制)

我正在尝试将位图图像保存到数据库 Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width, pictureBoxMetroMap.Size.Height); 我使用数据typesbinary在数据库中创build了一个列imgcontent ,但我的问题是如何将此bitmap (地图)转换为二进制数据? 我怎样才能从数据库检索数据? 我GOOGLE了,我发现这样的事情,但它不工作: byte[] arr; ImageConverter converter = new ImageConverter(); arr = (byte[])converter.ConvertTo(map, typeof(byte[]));

如何将视图转换为位图?

我在FrameLayout有两个视图( Textview和ImageView ),我想用文本保存图像。 为此,我将视图转换为位图。 我的xml是: <FrameLayout android:id="@+id/framelayout" android:layout_marginTop="30dip" android:layout_height="fill_parent" android:layout_width="fill_parent"> <ImageView android:id="@+id/ImageView01" android:layout_height="wrap_content" android:layout_width="wrap_content"/> <TextView android:id="@+id/text_view" android:layout_marginTop="30dip" android:layout_width="wrap_content" android:maxLines="20" android:scrollbars="vertical" android:layout_height="wrap_content"/> </FrameLayout>

最快的方法将图像转换为字节数组

我正在制作远程桌面共享应用程序,在该应用程序中,我捕获桌面的图像并将其压缩并发送到接收器。 要压缩图像我需要将其转换为一个字节[]。 目前我正在使用这个: public byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } public Image byteArrayToImage(byte[] byteArrayIn) { MemoryStream ms = new MemoryStream(byteArrayIn); Image returnImage = Image.FromStream(ms); return returnImage; } 但我不喜欢它,因为我必须将它保存在一个ImageFormat,并可能会耗尽资源(减慢),以及产生不同的压缩results.I阅读使用Marshal.Copy和memcpy,但我无法了解他们。 那么有没有其他方法可以达到这个目标呢?

什么是最快的方式,我可以比较两个相同大小的位图,以确定它们是否相同?

我正在尝试编写一个函数来确定两个相同大小的位图是否相同。 我现在所使用的函数只是比较每个位图中的一个像素,在第一个不相等的像素处返回false。 虽然这个工作,并且对于小的位图效果很好,但是在制作过程中,我将会在一个紧密的循环和更大的图像中使用它,所以我需要一个更好的方法。 有没有人有任何build议? 我使用的语言是C#顺便说一句 – 是的,我已经在使用.LockBits方法。 =) 编辑 :我已经编写了一些build议的实现,这里是基准。 设置:两个相同的(最坏的情况下)位图,大小100×100,每个10,000次迭代。 结果如下: CompareByInts (Marc Gravell) : 1107ms CompareByMD5 (Skilldrick) : 4222ms CompareByMask (GrayWizardX) : 949ms 在CompareByInts和CompareByMask我正在使用指针直接访问内存; 在MD5方法我使用Marshal.Copy来检索一个字节数组,并将其作为parameter passing给MD5.ComputeHash。 CompareByMask只是稍微快一点,但考虑到上下文,我认为任何改进都是有用的。 感谢大家。 =) 编辑2 :忘了closures优化 – 这样做可以使GrayWizardX的答案更具有提升性: CompareByInts (Marc Gravell) : 944ms CompareByMD5 (Skilldrick) : 4275ms CompareByMask (GrayWizardX) : 630ms CompareByMemCmp (Erik) : 105ms 有趣的是,MD5方法根本没有改进。 编辑3 :张贴我的答案(MemCmp)其他方法吹出来的水。 […]