C从数组中创建png /位图
所以我发现这个关于我的问题的链接,但它是针对c#
Create a PNG from an array of bytes 我有一个变量int数组. 我现在想做的是将其转换为像素图像. 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,"P3n"); // P3 filetype fprintf(imageFile,"%d %dn",width,height); // dimensions fprintf(imageFile,"255n"); // Max pixel int pix[100] {200,200,100,255,255}; fwrite(pix,1,18,imageFile); fclose(imageFile); } 我还没有完全明白它的作用.我可以打开输出图像,但它不是数组的正确表示. 如果我改变了一些东西,例如制作一个二维数组,那么图像查看器会告诉我“预期的整数”并且不会向我显示图像. 到现在为止还挺好. int aufrunden (double h) { int i =h; if (h-i == 0) { return i; } else { i = h+1; return i; } } 此功能用于创建图像. double h; h= sqrt(a/3.0); int i = aufrunden(h); FILE *imageFile; int height=i,width=i; 现在可能会发生,数组是a = 24长. aufrunden使图像3×3所以它有27个值…意味着它缺少1个像素的值. 什么会fwrite(pix,imageFile);用这些像素写信息?如果剩余值仅为0,那将是最好的. *编辑没关系,我只会在数组的末尾添加0,直到它填满整个方块…抱歉 解决方法
考虑使用Netpbm格式(pbm,pgm或ppm).
这些图像是非常简单的文本文件,您可以在没有任何特殊库的情然后使用某些第三方软件(如ImageMagick,GraphicsMagick或pnmtopng)将图像转换为PNG格式.这是一篇描述Netpbm format的维基文章. 这是一个简单的PPM图像: P3 2 3 255 0 0 0 255 255 255 255 0 0 0 255 255 100 100 100 200 200 200 第一行包含“P3”(将其标识为文本-PPM的“幻数”),2(宽度),3(高度),255(最大强度). 如果您需要更大的强度范围(最大65535),请使用更大的数字以获得最大强度(例如1024). Mark Setchell编辑超越这一点 – 所以我是一个有罪的派对! 图像看起来像这样(当放大六个像素时): 要转换和放大的ImageMagick命令是这样的: convert image.ppm -scale 400x result.png 如果ImageMagick有点重量级,或者难以安装,你可以更简单地使用NetPBM工具(从here开始)这样(它是一个预编译的二进制文件) pnmtopng image.ppm > result.png (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |