相关疑难解决方法(0)

c#Bitmap.Save transparancy不保存在png中

我正在尝试将具有透明性的Bitmap类保存为具有透明度的png文件.我没有运气.

位图具有透明度,它只是不保存透明度.

这就是我正在做的事情

位图设置

Bitmap ret = new Bitmap(bWidth, bHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Run Code Online (Sandbox Code Playgroud)

saveing

ret.Save(filename, ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)

我也尝试用文件流保存文件,这没有任何区别.

当图像在图片框中时,透明度存在,但是当我保存时,我只得到一个黑色背景.

我真的不想使用任何第三方代码,他们找到了一种方法来做到这一点,我也想.

谢谢.

c# png image bitmap save

9
推荐指数
2
解决办法
2万
查看次数

C++从数组中创建png /位图

所以我发现这个关于我的问题的链接,但它是针对c#

从字节数组创建PNG

我有一个变量int数组.我现在称它为"pix []",它可以是3到256之间的任何大小,之后可能更大.

我现在想做的是将其转换为像素图像.我仍然是一个noobin c ++,请原谅我.我试图下载一些使libpng更容易使用的库,但它们似乎没有工作(ubuntu,code :: blocks)所以我有以下问题:

1)如何创建新的位图(哪个libaries,哪个命令)?

2)如何填写"pix []"的信息?

3)我该如何保存?

如果它是一个问题的转贴我也很高兴链接;)

这是我到目前为止所做的工作,谢谢你的帮助.

int main(){
 FILE *imageFile;
 int x,y,pixel,height=2,width=3;

 imageFile=fopen("image.pgm","wb");
 if(imageFile==NULL){
  perror("ERROR: Cannot open output file");
  exit(EXIT_FAILURE);
 }

 fprintf(imageFile,"P3\n");           // P3 filetype
 fprintf(imageFile,"%d %d\n",width,height);   // dimensions
 fprintf(imageFile,"255\n");          // Max pixel
  int pix[100] {200,200,200, 100,100,100, 0,0,0, 255,0,0, 0,255,0, 0,0,255};


       fwrite(pix,1,18,imageFile);


fclose(imageFile);
}
Run Code Online (Sandbox Code Playgroud)

我还没有完全明白它的作用.我可以打开输出图像,但它不是数组的正确表示.

如果我改变了一些东西,例如制作一个二维数组,那么图像查看器会告诉我"预期的整数"并且不会向我显示图像.

到现在为止还挺好.因为我在图像之前有数组我创建了一个函数aufrunden来舍入到下一个int数,因为我想创建一个方形图像.

int aufrunden (double h)
{
int i =h;
if (h-i == 0)
  {
  return i;
  }
else
  {
  i = h+1;
  return …
Run Code Online (Sandbox Code Playgroud)

c++ arrays png bitmap

4
推荐指数
4
解决办法
2万
查看次数

标签 统计

bitmap ×2

png ×2

arrays ×1

c# ×1

c++ ×1

image ×1

save ×1