Tag: 位图

执行2个位图的重叠检测

我有一个自定义的图片框控件,允许在主图像上单独拖动2位图,从而允许用户选择2位图的位置。 对于第一个位图 Point src = e.Location; PointF ratio = new PointF((float)src.X / ClientSize.Width, (float)src.Y / ClientSize.Height); LaunchOrigin.textratio = ratio; Point origin = new Point((int)(backupbit1.Width * ratio.X), (int)(backupbit1.Height * ratio.Y)); LaunchOrigin.textorigin = origin; point.X = src.X – origin.X; point.Y = src.Y – origin.Y; 对于第二个位图 Point src = e.Location; PointF ratio = new PointF((float)src.X / Width, (float)src.Y […]

EmguCV仅在x86发布模式下出现内存不足 – 锐化图像

我试图使用EmguCV增加图像的清晰度 Image myImage = new Image(new Bitmap(pictureBox1.Image)); float[,] matrixKernel = new float[3, 3] { { 0,-1, 0 }, {-1, 5,-1 }, { 0,-1, 0 } }; ConvolutionKernelF matrix = new ConvolutionKernelF(matrixKernel); Image result = myImage.Convolution(matrix); Image BGRResult = result.ConvertScale(1, 0); e.Result = BGRResult.ToBitmap(); myImage.Dispose(); result.Dispose(); BGRResult.Dispose(); 该代码适用于中等分辨率图像,但在使用高分辨率图像时,例如:6000X4000抛出以下exception 请注意,当项目设置为AnyCPU时,即使对于高分辨率图像,锐化也能正常工作 – >调试模式我正在使用EmguCV 3.3 更新 : 根据Rick的参考答案,我做了以下修改,但问题仍然存在。请咨询。 float[,] […]

在wpf和gdi +之间转换图像时,内存消耗过多

在将TransformedBitmap转换为System.Drawing.Bitmap时,我期待过多的内存消耗。 图像非常大,7360×4912像素,BGR32像素格式,最多可达144609280位~138MB。 最初我将图像从硬盘驱动器加载到BitmapImage中。 然后使用RotateTransform旋转它以最终的TransformedBitmap(WPF)结束。 对于使用EmguCV进行图像处理,我需要System.Drawing.Bitmap。 我使用以下函数转换TransformedBitmap: Private Function convertToBitmap(tb As TransformedBitmap) As System.Drawing.Bitmap Dim myBitmap As New System.Drawing.Bitmap(tb.PixelWidth, tb.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb) ‘140mb increase’ Dim data As System.Drawing.Imaging.BitmapData = myBitmap.LockBits(New System.Drawing.Rectangle(System.Drawing.Point.Empty, myBitmap.Size), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb) tb.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride) ‘another 140MB increase’ myBitmap.UnlockBits(data) Return myBitmap End Function TransformedBitmap的加载大约需要140MB。 使用上述函数将TransformedBitmap转换为Bitmap后,我可以检测到276MB的增加,这正是图像本身大小的两倍。 你有什么我想念的线索吗? 我想保留转换后的位图以及转换后的位图,但仅此而已。 提前致谢 编辑: 这是调用代码,内容有一些评论: Dim tb […]

从2个不同的图像C#创建新图像

我在一个函数中工作,我有两个图像,其中一个是背景,另一个是QR码,我需要使用背景(图像1)和QR图像创建一个新图像,但我需要定义QRCode图像的位置。 像波纹管图像, 最好的祝福

如何将图像转换为xamarin.android中的base64?

我有这个代码,它在android studio中工作得很好,但在xamarin bitmap.Compress()在xamarin中有不同的参数 ,我很困惑如何在xamarin.android中将图像转换为base64或二进制? 我在第3行收到错误: (bitmap.Compress()有一些无效的参数)。 Bitmap bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.ace1); ByteArrayOutputStream bao = new ByteArrayOutputStream(); bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100,bao); byte[] ba = bao.ToByteArray(); string bal = Base64.EncodeToString(ba, Base64.Default);

如何减少Windows手机中的图像大小

我想在Windows手机中移植我的应用程序。 我必须在服务器上传一个图像所以它是小尺寸上传我已经在Widows成功完成了这件事但问题是当我失败了..这里是我的代码为Windows App public void CompressImage(int i, int j) { bmp1.SetPixel(j, i, Color.FromArgb(bmp.GetPixel(j, i).R, bmp.GetPixel(j, i).G, bmp.GetPixel(j, i).B)); } private void bLoadImage_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDialog(); if (file.ShowDialog() == DialogResult.OK) { pictureBox1.Image = new Bitmap(file.FileName); } } private void bCompression_Click(object sender, EventArgs e) { bmp = new Bitmap(pictureBox1.Image); bmp1 = […]

C# – 如何将图像转换为8位彩色图像?

我需要将从文件加载的PNG图像转换为另一个设备(嵌入式编程)使用的每像素8位字节数组。 我正在逐个像素地复制到使用16位颜色创建的新图像 – Format16bppRgb565 ,但我需要Format8bpp ,这在.NET Framework中不存在。 (我不能使用Format8bppIndexed因为其他设备无法处理索引位图) Bitmap img = new Bitmap(imgPath); Bitmap img8 = new Bitmap(imgW, imgH, PixelFormat.Format16bppRgb565); for (int I = 0; I <= img.Width – 1; I++) { for (int J = 0; J <= img.Height – 1; J++) { img8.SetPixel(I, J, img.GetPixel(I, J)); } } 那么如何将Image转换为每像素8位字节数组呢? 我可以使用8位索引格式并提取字节吗? – Format8bppIndexed 我可以通过将32位颜色的R,G,B值减少到8位来计算像素颜色吗? […]

在c#中将字符串转换为位图

我想将字符串转换为位图或我可以在像素框中显示的内容。 我的字符串看起来像这样: string rxstring = “010010010020020020030030030040040040050050050060060060070070070080080080090090090100100100110110110120120120130130130140140140150150150160160160“ 擦除字符串中的RGB代码没有问题 (“01002003004005060070080090100110120130140150160”); 我只需要它来表明,这并不重要[原文如此] IDE:VS2010 C#

如何在精确的像素位置绘制字符串

我尝试在C#中将一个字符串(单个字符)绘制到一个精确位置的位图中: Bitmap bmp = new Bitmap(64, 64); Graphics g = Graphics.FromImage(bmp); g.DrawString(“W”, font1, new SolidBrush(myColor), new Point(32,32); 在一个字母周围有很多空白空间,我无法猜测“需要”的位置来绘制角色,使其在最后的正确位置。 到目前为止,我有像素的精确尺寸(查看单独渲染的位图中的位)。 但是如果我不能在准确位置(例如中心或右上角或……)绘制角色,这些信息就没用了。 是否还有其他方法可以在位图上用C#绘制文本? 或者是否有任何转换方法来转换DrawString需要的实际像素位置?

从常见图像格式中删除所有元数据?

我正在为一个将处理我们图像处理的项目编写服务。 一个这样的过程应该从提供的byte[]去除所有元数据,并将相同的图像作为byte[] 。 我目前正在处理的方法包括始终将图像转换为Bitmap ,然后将其转换回原始格式并从MemoryStream返回数据。 我还没能测试它,但有些东西告诉我,我将体验到一些质量损失。 如何使用通用格式从任何图像中删除所有元数据? (bmp, gif, png, jpg, icon, tiff) 我不确定如何进一步缩小范围。 如果我得到关于downvotes的一些反馈,那会很好。