1

イメージをbase64文字列に変換する必要があるWindows Phoneアプリケーションを開発しており、その文字列をWebサービスに渡す必要があります。そのため、さまざまな方法を試しましたが、「ターゲット呼び出しエラー」というエラーが発生するたびに送信できません。このコードを使用すると、ライブラリから画像を選択できますが、Web サービス経由で送信できません。

次のコードを使用して画像を変換しました。

private void photoChooserTask_Completed(object sender, PhotoResult e)
{
    BitmapImage image = new BitmapImage();
    image.SetSource(e.ChosenPhoto);
    this.imageTribute.Source = image;
    byte[] bytearray = null;
    using (MemoryStream ms = new MemoryStream())
    {

        if (imageTribute.Source == null)
        {

        }
        else
        {
            WriteableBitmap wbitmp = new WriteableBitmap((BitmapImage)imageTribute.Source);

            wbitmp.SaveJpeg(ms, 40, 40, 0, 82);
            bytearray = ms.ToArray();
        }
    }
    strimage = Convert.ToBase64String(bytearray);
}

だから、誰かがそれについて知っているなら、私を助けてください。事前にサンクス。

編集

void uploadphoto()
{
WebClient webClient1 = new WebClient();
    webClient1.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient1_DownloadStringCompleted);
webClient1.DownloadStringAsync(new Uri("Web Service"));
}
void webClient1_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
var rootobject1 = JsonConvert.DeserializeObject<RootObject1>(e.Result);
int error = rootobject1.response.errorFlag;
    string message = rootobject1.response.msg;
if (error == 0)
        {
                MessageBox.Show(message);
        }
    else
        {
                MessageBox.Show(message);
        }
}
public class Response1
{
public int errorFlag { get; set; }
    public string msg { get; set; }
    public List<string> uploadedImageNames { get; set; }
}
public class RootObject1
{
public Response1 response { get; set; }
}
private void ImageUpload(object sender, RoutedEventArgs e)
{
    //MessageBoxResult mb = MessageBox.Show("Select the mode of uploading the picture", "", MessageBoxButton.OKCancel);
    Popup popup = new Popup();
    photoSelection photo = new photoSelection();
    popup.Child = photo;
    popup.IsOpen = true;
    photo.camera.Click += (s, args) =>
        {
            photoCameraCapture.Show();
            popup.IsOpen = false;
        };
    photo.library.Click += (s, args) =>
        {
            photoChooserTask.Show();
            popup.IsOpen = false;
        };
}

編集

スタックトレース

ここに、エラーのスタック トレースをアップロードしました。ですので、確認して返信してください。

4

2 に答える 2

0

Target Invocation Exception エラーは、多くの可能性があるメソッドの呼び出し中にアプリケーションがクラッシュしたことを示します。実際のエラーは InnerException にあります。

TargetInvocationException オブジェクトの InnerException プロパティを見てください。これにより、スタック トレースと実際にスローされたエラーが表示されます。

于 2013-08-08T09:05:01.520 に答える
-1

リソースまたは isolatedStorage からファイルをストリームに取得します

//getting file from resource
var resource = Application.GetResourceStream(new Uri("image.jpg", UriKind.Relative));
//get Stream Data
StreamReader streamReader = new StreamReader(resource.Stream);
//initializing bytearray to stream length
byte[] imageData = new byte[streamReader.Length];
//wriing from stream to imagdata
streamReader.Read(imageData, 0, imageData.Length);
streamReader.Close();

isolatedStorageFile を使用して、画像データを分離ストレージから読み取り、imageDataそれを base64 使用に変換します。

var baseString = Convert.ToBase64String(imageData);
于 2013-08-09T07:13:34.323 に答える