2

C#FaceBook APIを使用して、ステータスの更新と画像を壁に投稿しています。私は次のコードを使用しています:

    public string PostToFaceBookPage(string appKey, string appSecret, string wallId, string postMessage, string imageUrl)
    {
        string id = "";
        if (string.IsNullOrEmpty(imageUrl))
            imageUrl = "";
        var client = new Facebook.FacebookClient();

        dynamic result = client.Post("oauth/access_token",
                                      new
                                      {
                                          client_id = appKey,
                                          client_secret = appSecret,
                                          grant_type = "client_credentials",
                                          redirect_uri = "anywhere",
                                          scope = "publish_stream"
                                      });
        client.AccessToken = (result)["access_token"];

        if (!IsId(wallId))
        {
            result = client.Get(wallId);
            id = result["id"];
        } else
        {
            id = wallId;
        }

        if (imageUrl == "")
        {
            result = client.Post("/" + id + "/feed", new
                {
                    message = postMessage,
                    scope = "publish_stream",
                    privacy = "{\"value\": \"EVERYONE\"}"
                });
        } else
        {
            var uri = new Uri(imageUrl);
            string imageName = Path.GetFileName(uri.LocalPath);
            string mimeType = GetMimeType(Path.GetExtension(uri.LocalPath));
            var media = new Facebook.FacebookMediaObject
                {
                    FileName = imageName,
                    ContentType = mimeType
                };

            media.SetValue(GetImage(imageUrl));
            result = client.Post("/" + id + "/feed", new
            {
                message = postMessage,
                source = media,
                picture = imageUrl,
                scope = "publish_stream",
                privacy = "{\"value\": \"EVERYONE\"}"
            });
        }

        return "";
    }

すべてが正常に機能しています。私の唯一の問題は、実際の画像のサイズに関係なく、すべての画像が同じ正確なサイズを投稿していることです。画像の小さなサムネイルを投稿するだけでなく、FaceBookに画像のサイズを伝える方法はありますか?

4

1 に答える 1

0

私がAPIを使用してから数年が経過しているため、FacebookAPIがこれらのパラメーターを持つことができるかどうかはわかりません。

ただし、一時的な修正として、Facebookにアップロードする前に写真のサイズを変更してみてください。

以下のコードは、http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizingから使用できます。

private static Image resizeImage(Image imgToResize, Size size)
{
   int sourceWidth = imgToResize.Width;
   int sourceHeight = imgToResize.Height;

   float nPercent = 0;
   float nPercentW = 0;
   float nPercentH = 0;

   nPercentW = ((float)size.Width / (float)sourceWidth);
   nPercentH = ((float)size.Height / (float)sourceHeight);

   if (nPercentH < nPercentW)
      nPercent = nPercentH;
   else
      nPercent = nPercentW;

   int destWidth = (int)(sourceWidth * nPercent);
   int destHeight = (int)(sourceHeight * nPercent);

   Bitmap b = new Bitmap(destWidth, destHeight);
   Graphics g = Graphics.FromImage((Image)b);
   g.InterpolationMode = InterpolationMode.HighQualityBicubic;

   g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
   g.Dispose();

   return (Image)b;
 }
于 2012-10-15T15:53:24.633 に答える