![](/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.