2016-02-28 27 views
1

我对编程比较陌生,一直在研究一个生成Julia集合图像的小程序,并将它们上传到我的Twitter帐户。实际的图像是作为PPM文件在C中创建的,然后Python3脚本将打开并保存为PNG文件,然后将其上传到Twitter。这很好,除了在Twitter上这个图像是一个JPEG,并且有很多文物。为什么Twitter会将我用C和Python3制作的图像从PNG转换为JPEG?

我用ImageMagick的标识-verbose来比较我的PNG图像和另一个在互联网上的图像。我发现的主要区别是我的图像有“Type:Pallete”,另一个PNG有“Type:TrueColorAlpha”。

我发现其他人在网上说,通过改变一个像素的透明度,Twitter没有将PNG转换为JPEG格式,但是我很难做到这一点。

的我的C代码创建的PPM文件的部分如下:

FILE *f = fopen("julia.ppm", "wb); 
fprintf(f, "P6\n %i 255\n", size, size); /*Size is an int defined previously*/ 

for(i=0; i<size; i++) { 
    for(j=0; j<size; j++) { 
     fputc(image[i][j],f); 
     fputc(0, f); 
     fputc(0, f); 
    } 
} 
fclose(f); 

“图像”是一个尺寸大小*阵列用0至中的每个元素255的值。

是把它变成一个PNG我Python3代码如下

import tweepy 
from PIL import Image, ImageEnhance 

#Twitter Info# 

im = Image.open('julia.ppm') 
enhancer = ImageEnhance.Brightness(im) 
im = enhancer.enhance(1.5) 
im.save('julia.png') 

api.update_with_media('julia.png') 

我希望能够上传图片到Twitter和它留(如果可能)的PNG文件。任何帮助将不胜感激。

谢谢!

回答

0

Twitter的上传工具现在似乎(2016年5月)始终强制进行JPEG转换。

您还可以上传使用API​​ PNG图像,并有做出这么简单的工具:

https://apigee.com/embed/console/twitter

  1. 验证与你的Twitter帐户(靠近顶部)
  2. 选择API方法“ update_profile_image.json“
  3. 转到”Body“选项卡并向下滚动顶部,直到找到图片上传按钮。
  4. 按照以下尺寸的规则(不是在API工具的 - 他们似乎过时了)
  5. 点击“发送” :)

当前规则(和这个端点的文档):

必须是小于700千字节的有效GIF,JPG或PNG图像。宽度大于400像素的图像将缩小比例。动画GIF将被转换为第一帧的静态GIF,移除动画。

来源:https://dev.twitter.com/rest/reference/post/account/update_profile_image