Проблема загрузки изображения в Silverlight 4 - PullRequest
0 голосов
/ 13 июля 2011

Я использую Silverlight4 с java веб-сервисами на странице jsp. Я хочу сохранить изображение на сервере, поэтому пытаюсь сделать это с помощью веб-сервиса Java. Я использую ниже строки кода, но вывод поврежден. Я не открываю t understand why. Please help me. This is really important for me. When i try to open 3mb jpeg file contains "Windows Photo Viewer can эту фотографию, потому что файл кажется поврежденным, поврежденным или слишком большим. "

Клиентский код

WriteableBitmap wb = new WriteableBitmap(bitmapImage);
            byte[] bb = ToByteArray(wb);

public byte[] ToByteArray(WriteableBitmap bmp)
    {
        int[] p = bmp.Pixels;
        int len = p.Length * 4;
        byte[] result = new byte[len]; // ARGB
        Buffer.BlockCopy(p, 0, result, 0, len);
        return result;
    }

Код WebService

@WebMethod(operationName = "saveImage")
public Boolean saveImage(@WebParam(name = "img")
byte[] img, @WebParam(name = "path")
String path) {
    try{
        FileOutputStream fos = new FileOutputStream("C:\\Users\\TheIntersect\\Desktop\\sharp_serializer_dll\\saved.jpg");
        fos.write(img);
        fos.close();
        return true;
    }
    catch(Exception e){
        return false;
    }
}

1 Ответ

0 голосов
/ 14 июля 2011

Я нашел свой ответ на forum.silverlight.net Это очень интересно, когда я пытаюсь вызвать ReadFully (Stream) сразу после определения Stream, это работает, но когда я вызываю 10 строк кода позже, он возвращает все 0. * 1001 функция *

        public static byte[] ReadFully(Stream input)
    {
        byte[] buffer = new byte[input.Length];
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
    }

Код ошибки

using (Stream str = opd.File.OpenRead()) 
        {  
            BitmapImage bitmapImage = new BitmapImage(); 
            bitmapImage.SetSource(str); 
            image.Tag = bitmapImage.UriSource.ToString(); 
            image.Source = bitmapImage; 
            image.Width = width; 
            image.Height = height; 
            image.Stretch = Stretch.Uniform; 
            container.Child = image; 
            rtb.Selection.Insert(container); 
            ServiceReference1.webWordWebServiceClient s = new ServiceReference1.webWordWebServiceClient(); 
            byte[] bb = ReadFully(str); 
            s.saveImageCompleted += new EventHandler<ServiceReference1.saveImageCompletedEventArgs>(s_saveImageCompleted); 
            s.saveImageAsync(bb, "gungorrrr"); 

        }

Успешный код

using (Stream str = opd.File.OpenRead()) 
        { 
            byte[] bb = ReadFully(str); 
            BitmapImage bitmapImage = new BitmapImage(); 
            bitmapImage.SetSource(str); 
            image.Tag = bitmapImage.UriSource.ToString(); 
            image.Source = bitmapImage; 
            image.Width = width; 
            image.Height = height; 
            image.Stretch = Stretch.Uniform; 
            container.Child = image; 
            rtb.Selection.Insert(container); 
            ServiceReference1.webWordWebServiceClient s = new ServiceReference1.webWordWebServiceClient(); 

(BitmapImage);

            s.saveImageCompleted += new EventHandler<ServiceReference1.saveImageCompletedEventArgs>(s_saveImageCompleted); 
            s.saveImageAsync(bb, "gungorrrr"); 

        }

Ссылка: http://forums.silverlight.net/forums/p/234126/576070.aspx#576070

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...