0

Windows 1252 エンコーディングを使用して、イメージを .NET バックエンド サービスにストリーミングする必要があります。したがって、画像データで作成されたNSURLRequestHTTPBodyStreamセットしてを作成する必要があると思います。NSInputStreamまた、エンコーディングを Windows 1252 または に設定する必要がありますNSWindowsCP1252StringEncoding

本当に 2 つの質問があります。

  1. 渡されたデータまたはファイルNSInputStreamに使用する方法を教えてください。NSWindowsCP1252StringEncoding
  2. UIImage を「NSWindowsCP1252StringEncoding」データに変換するにはどうすればよいですか? 私はbase64メソッドしか知りません。

編集:

これは、動作中のクライアントを模倣する .NET コードの例です。

            wr.Method = "POST";
            wr.ContentType = "application/octet-stream";
            wr.UseDefaultCredentials = true;

            string ImagePath = @"C:\Users\smith\Desktop\Cat-and-dog.jpg";

            byte[] ibuffer = File.ReadAllBytes(ImagePath);

            wr.ContentLength = ibuffer.Length;
            Stream pData = wr.GetRequestStream();
            pData.Write(ibuffer, 0, ibuffer.Length);
            pData.Close();

            HttpWebResponse wres = wr.GetResponse() as HttpWebResponse;

            Encoding enc = System.Text.Encoding.GetEncoding(1252);

            StreamReader strRdr = new StreamReader(wres.GetResponseStream(), enc);
            string resp = strRdr.ReadToEnd();
4

1 に答える 1

1
  1. は文字列を操作しないNSInputStreamため、どのエンコーディングを使用するかはわかりません。生バイトを提供します。必要な入力形式を使用してこれらのバイトをデコードするのは、ユーザーの責任です。NSInputStreamNSInputStream

    NSOutputStreamまた、「画像を .NET バックエンド サービスにストリーミングする必要がある」ため、 ではなくが必要だと思いますNSInputStream。しかし、それは同じことです。生のバイトを出力ストリームに渡します。文字列を自分でバイトにエンコードする必要があります。

  2. UIImageaを任意の文字エンコーディングに変換するという考えは、 aUIImageはテキストではなくピクセル データであるため、やや無意味です。最初に、ピクセル データをどのようにエンコードするかをデコードする必要があります。PNG を使用してエンコードするとします。

    UIImage *image = ...
    NSData *imageData = UIImagePNGRepresentation(image);
    NSData *imageBase64Data = [imageData base64EncodedDataWithOptions:0];
    

    この時点で、imageBase64DataPNG としてエンコードされた画像、base 64 としてエンコードされた画像、UTF-8 としてエンコードされた画像が含まれています。これは間違った文字エンコーディングだと思うかもしれませんが、base 64 エンコーディングは印刷可能な ASCII 文字のみを使用します。CP1252 と UTF-8 は両方とも ASCII のスーパーセットであるため、CP1252 の内容imageBase64Dataも有効です。

    明示的にエンコードする文字列が必要な場合は、代わりにこれを行うことができます。

    NSString *imageBase64String = [imageData base64EncodedStringWithOptions::0];
    NSData *imageBase64Data = [imageBase64String dataUsingEncoding: NSWindowsCP1252StringEncoding];
    
于 2015-10-29T21:11:58.020 に答える