Доступ GIF структурирует с C#

  • Вы хотите поместить значения [[max_temp, avg_temp, min_temp]] в столбцы B-C, E-G и H-J.
  • Если мое понимание верно, как насчет этой модификации?

    Точки модификации:

    • Если используется values.append , когда [ 113] и 'Sheet1!B:D' используются в качестве значения и диапазона, соответственно значения помещаются в столбцы AC. Даже если используется диапазон 'Sheet1', результат тот же.
    • Чтобы записать [[max_temp, avg_temp, min_temp]] в столбец B-C, есть 2 способа:
      1. Когда в последней строке предполагается значение 10, в качестве диапазона используется 'Sheet1!B11'.
        • В этом случае требуется знать последнюю строку. Li>
      2. Когда используется диапазон 'Sheet1!B:D', в качестве значения используется [["", max_temp, avg_temp, min_temp]] ,
        • В этом случае, хотя значения помещаются в последнюю строку, когда значения добавляют пустые элементы в начало массива, существует случай, когда значения не помещаются в правильные позиции. li>

    В моем окружении я был смущен в этой ситуации раньше. Поэтому я подумал об обходном пути и решил свою проблему. В этом обходном пути используется метод AppendCellsRequest из spreadsheets.batchUpdate . Я думаю, что для вашей ситуации может быть несколько обходных путей, поэтому, пожалуйста, подумайте об этом как об одном из них.

    Изменен скрипт:

    Пожалуйста, обновите ваш скрипт (после service = build('sheets', 'v4', http=creds.authorize(Http()))) до следующих строк:

    spreadsheet_id = "#####"  # Please set spreadsheet ID here.
    sheetId = 0  # Please set sheet ID here.
    values = [[max_temp, avg_temp, min_temp]]
    range_list = [1, 4, 7]  # columns B, E and H. First index is 0.
    rows = [{'values': ([{}] * e) + [{'userEnteredValue': {'stringValue': r}} for r in values[0]]} for e in range_list]
    body = {'requests': [{'appendCells': {'rows': rows, 'sheetId': 0, 'fields': "userEnteredValue.stringValue"}}]}
    result = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()
    

    Примечание:

    • Этот измененный скрипт Предполагается, что ваша среда может использовать API Sheets.
    • При использовании этого сценария, пожалуйста, установите идентификатор листа Sheet1 и установите значения max_temp, avg_temp, min_temp.
    • range_list = [1, 4, 7] означает столбцы B, E и H. В этом случае первый индекс равен 0.
    • В этом модифицированном скрипте все значения range_list создаются как тело запроса и используются. Таким образом, значения могут быть введены одним вызовом API. Так что for i in range(3) в вашем вопросе можно удалить.
    • Это пример модификации. Поэтому, пожалуйста, измените вашу ситуацию.

    Ссылки:

    Если я неправильно понял ваш вопрос, извините.

13
задан Valeria 12 February 2009 в 10:12
поделиться

2 ответа

немного поиска с помощью Google: редактирование анимировало gif's в c#

Можно считать анимированного Gif с Изображением. GetFrameCount () и SelectActiveFrame ().

9
ответ дан 1 December 2019 в 20:13
поделиться

Попробуйте это:

using System.Drawing;    
using System.Drawing.Imaging;

Image gifImg = Image.FromFile(pathToGifFile);
FrameDimension dimension = new FrameDimension(gifImg.FrameDimensionsList[0]);
// Number of frames
int frameCount = gifImg.GetFrameCount(dimension);
// Return an Image at a certain index
gifImg.SelectActiveFrame(dimension, index);
22
ответ дан 1 December 2019 в 20:13
поделиться
Другие вопросы по тегам:

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