![](/img/trans.png)
[英]How do I pass a NSInputStream to MPMoviePlayerController?
[英]How do I set an encoding type on NSInputStream?
我需要使用Windows 1252編碼將圖像流式傳輸到.NET后端服務。 所以我相信我需要創建一個NSURLRequest
,並將其HTTPBodyStream
設置為使用圖像數據創建的NSInputStream
。 而且我需要將編碼設置為Windows 1252或NSWindowsCP1252StringEncoding
。
我確實有兩個問題:
NSInputStream
使用NSWindowsCP1252StringEncoding
作為傳入的數據或文件。 編輯:
這是模仿工作客戶端的示例.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();
您不會告訴NSInputStream
使用哪種編碼,因為NSInputStream
不會對字符串進行操作。 NSInputStream
給您原始字節。 您有責任使用所需的任何輸入格式對這些字節進行解碼。
另外,由於您“需要將圖像流式傳輸到.NET后端服務”,因此我認為您需要的是NSOutputStream
而不是NSInputStream
。 但這是相同的:將原始字節提供給輸出流。 您必須自己將字符串編碼為字節。
將UIImage
轉換為任何字符編碼的想法有點荒謬,因為UIImage
是像素數據,而不是文本。 首先,您必須解碼要如何編碼像素數據。 假設您要使用PNG對其進行編碼:
UIImage *image = ... NSData *imageData = UIImagePNGRepresentation(image); NSData *imageBase64Data = [imageData base64EncodedDataWithOptions:0];
此時, imageBase64Data
包含編碼為PNG,編碼為base 64,編碼為UTF-8的圖像。 您可能會認為這是錯誤的字符編碼,但是base 64編碼僅使用可打印的ASCII字符。 由於CP1252和UTF-8都是ASCII的超集,因此imageBase64Data
的內容也是有效的CP1252。
如果您希望使用一個字符串來進行顯式編碼,則可以執行以下操作:
NSString *imageBase64String = [imageData base64EncodedStringWithOptions::0]; NSData *imageBase64Data = [imageBase64String dataUsingEncoding: NSWindowsCP1252StringEncoding];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.