& ldquo; Параметр недействителен & rdquo; исключение при загрузке System.Drawing.Image

Кажется, что это объясняет это.

Определение order состоит в том, что a[order(a)] находится в порядке возрастания. Это работает с вашим примером, где правильный порядок - это четвертый, второй, первый, затем третий элемент.

Возможно, вы искали rank, который возвращает ранг элементов R> a <- c(4.1, 3.2, 6.1, 3.1) R> order(a) [1] 4 2 1 3 R> rank(a) [1] 3 2 4 1, поэтому rank сообщает вам, в каком порядке находятся числа, order сообщает вам, как получить их в порядке возрастания.

plot(a, rank(a)/length(a)) даст график CDF. Чтобы понять, почему order полезен, попробуйте plot(a, rank(a)/length(a),type="S"), который дает беспорядок, потому что данные не в порядке возрастания

Если вы сделали oo<-order(a) plot(a[oo],rank(a[oo])/length(a),type="S") или просто oo<-order(a) plot(a[oo],(1:length(a))/length(a)),type="S") вы получите линейный график CDF.

blockquote>

Готов поспорить, вы думаете о ранге.

30
задан rene 23 January 2016 в 19:25
поделиться

3 ответа

Мое предположение - то, что byteArrayIn не содержит допустимые данные изображения.

дайте больше информации хотя:

  • , Какая строка кода выдача является исключением?
  • , Каково сообщение?
  • , Где Вы добирались byteArrayIn от, и действительно ли Вы уверены, что это должно содержать действительное изображение?
14
ответ дан Jon Skeet 23 January 2016 в 19:25
поделиться
  • 1
    Спасибо @MikhailFedorov.Как раз то, что мне было нужно. – Srikanth Jeeva 15 September 2016 в 09:05

Какая строка выдача является исключением? new MemoryStream(...)? или Image.FromStream(...)? И что byteArrayIn? Действительно ли это byte[]? Я только спрашиваю из-за комментария, "И ни одно из значения в нем не больше, чем 255" - который, конечно, является автоматическим для byte[].

Как более очевидный вопрос: двоичный файл на самом деле содержит изображение в разумном формате?

, Например, следующее (хотя не большой код) хорошо работает:

    byte[] data = File.ReadAllBytes(@"d:\extn.png"); // not a good idea...
    MemoryStream ms = new MemoryStream(data);
    Image img = Image.FromStream(ms);
    Console.WriteLine(img.Width);
    Console.WriteLine(img.Height);
3
ответ дан Marc Gravell 23 January 2016 в 19:25
поделиться

У меня была такая же проблема, и, по-видимому, она теперь решена, несмотря на то, что это и некоторые другие исключения gdi + вводят в заблуждение, я обнаружил, что на самом деле проблема заключалась в том, что параметр, отправляемый в конструктор Bitmap, не был действительный. У меня есть этот код:

using (System.IO.FileStream fs = new System.IO.FileStream(inputImage, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
{
    try
    {
        using (Bitmap bitmap = (Bitmap)Image.FromStream(fs, true, false))
        {
            try
            {
                bitmap.Save(OutputImage + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                GC.Collect();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
    catch (ArgumentException aex)
    {
        throw new Exception("The file received from the Map Server is not a valid jpeg image", aex);
    }
}

Следующая строка вызвала ошибку:

Bitmap bitmap = (Bitmap)Image.FromStream(fs, true, false)

Файловый поток был создан из файла, загруженного с Map Server. Мое приложение неправильно отправляло запрос на получение изображения, и сервер возвращал что-то с расширением jpg, но на самом деле это был html, сообщающий мне, что произошла ошибка. Итак, я взял это изображение и попытался построить с ним растровое изображение. Исправление заключалось в том, чтобы контролировать / проверять правильность изображения в формате jpeg.

Надеюсь, это поможет!

18
ответ дан 28 November 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: