У меня была аналогичная проблема. В моем случае никогда не было проблемой сдуть все в репозитории heroku и заменить его тем, что находится в моем подкаталоге. Если это ваш случай, вы можете использовать следующий сценарий bash. Просто поставьте его в свой каталог приложений Rails.
#!/bin/bash
#change to whichever directory this lives in
cd "$( dirname "$0" )"
#create new git repository and add everything
git init
git add .
git commit -m"init"
git remote add heroku git@heroku.com:young-rain-5086.git
#pull heroku but then checkback out our current local master and mark everything as merged
git pull heroku master
git checkout --ours .
git add -u
git commit -m"merged"
#push back to heroku, open web browser, and remove git repository
git push heroku master
heroku open
rm -fr .git
#go back to wherever we started.
cd -
Я уверен, что есть много способов улучшить это - так что не стесняйтесь рассказывать мне, как это сделать!
Вы должны сначала преобразовать столбец, где вы хотите изображения как столбец изображения.
Вы можете сделать это в свойствах этого представления данных ИЛИ программно, когда вы создаете представление данных и добавляете в него свои столбцы:
Dim imgColumn as new DataGridViewImageColumn
DataGridView1.Columns.Add(imgColumn)
Как только вы добавили столбец / изменили тип столбца, который можно затем преобразовать в каждую ячейку в этом столбце в растровое изображение:
Это может выглядеть примерно так (замените colindex
порядковым номером столбца вашего изображения, например, imgColumn
мы заявлено выше):
Dim currRow as Int = 0
For Each row As DataGridViewRow In DataGridView1.Rows
Dim img = new Bitmap(DataGridView1.Item(colindex, currRow).value);
DataGridView1.Item(colindex, currRow).value = img
currRow = currRow + 1
Next
Ссылка здесь
Примечание. Этот вопрос имеет продолжение здесь:
Копировать выбранные строки флажков из DGV в DGV2, включая столбец изображения
JSON
в объект вашего класса. Вы можете и добавить новое открытое свойство Type Bitmap во внутренний класс Result
, который будет использоваться для представления изображения, на которое ссылается URI, найденный в JSON.
Чтобы получить Изображения, вам нужен метод, который берет URI ресурса и загружает его с удаленного компьютера. Я добавил открытый метод в класс Products
, который ссылается на все объекты, содержащие ссылку на URI:
после того, как JSON
был успешно проанализирован, [ 1110] Свойство будет ссылаться на все классы Result
. Каждый класс Result
будет ссылаться на битовый URI в свойстве ProductImage
.
Используя класс WebClient
, мы можем использовать эти ссылки для загрузки изображений и добавления их в свойство типа Bitmap.
Нам также нужно указать парсеру JSON
игнорировать это свойство, так как оно не является частью объекта JSON
.
Это можно сделать, добавив атрибут <JsonIgnore>
к свойству.
Переименуйте RootObject
(с именем JSON
в определении вашего класса) в Root
:
Кроме того, все классы, которые вы здесь показываете, добавляются в родительский класс с именем [ 1165]
blockquote>ProductsQuery
, используется в качестве контейнера для всех объектов класса.Public Class Root Public Property uk As Uk End Class
Десериализовать JSON с помощью
JsonConvert.DeserializeObject
:Dim JSONObject As String = File.ReadAllText("[Source Txt]") Dim JsonPost As ProductsQuery.Root = JsonConvert.DeserializeObject(Of ProductsQuery.Root)(JSONObject)
Используйте недавно добавленный публичный метод для загрузки изображений:
JsonPost.uk.ghs.Products.LoadImages()
Подготовьте DataGridViewImageColumn , который покажет изображения:
Редактировать : также вставьтеDataGridViewCheckBoxColumn
.Dim DGVCheckBoxCol As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn(False) With { .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader, .DisplayIndex = 0, .HeaderText = "", .Name = "Select" } Dim DGVImageCol As DataGridViewImageColumn = New DataGridViewImageColumn(False) With { .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader, .DataPropertyName = "Image", .DisplayIndex = 1, .FillWeight = 1, .HeaderText = "Image", .ImageLayout = DataGridViewImageCellLayout.Normal, .Name = "Image", .ValuesAreIcons = False }
Затем установите DataGridView
DataSource
и скройте столбец, содержащий URI-код изображения, который здесь не очень полезен. Кроме того, вызовите метод AutoResizeRows , чтобы установить размер строк для лучшего представления изображения:DataGridView1.DataSource = Nothing DataGridView1.Columns.Clear() DataGridView1.Columns.Insert(0, DGVCheckBoxCol) DataGridView1.Columns.Insert(1, DGVImageCol) DataGridView1.DataSource = JsonPost.uk.ghs.Products.Results DataGridView1.Columns(2).Visible = False DataGridView1.AutoResizeRows()
Результат :
[1156 ]
Модифицированные классы :
Примечание :
description
свойство представляет собой массив строк, которые DGV отказывается показывать как есть. Я назвал егоRawDescription
и добавил новое свойство (Description
) типа String - с атрибутом<JsonIgnore>
- вResult
класс, который будет содержать сплющенную строку.Imports System.IO Imports System.Net Imports Newtonsoft.Json Public Class ProductsQuery Public Class Root Public Property uk As Uk End Class Public Class Uk Public Property ghs As Ghs End Class Public Class Ghs Public Property products As Products End Class Public Class Products Public Property input_query As String Public Property output_query As String Public Property filters As Filters Public Property queryPhase As String Public Property totals As Totals Public Property config As String <JsonProperty("results")> Public Property Results As Result() Public Property suggestions As Object() Public Sub LoadImages() Using client As WebClient = New WebClient() For Each result As Result In Results Dim bitmapBytes = client.DownloadData(result.ProductImage) Using ms As MemoryStream = New MemoryStream(bitmapBytes) ms.Position = 0 result.Image = CType(Image.FromStream(ms).Clone(), Bitmap) End Using result.ProductDescription = result.RawDescription(0) Next End Using End Sub End Class Public Class Filters End Class Public Class Totals Public Property all As Integer <JsonProperty("new")> Public Property NewProducts As Integer Public Property offer As Integer End Class Public Class Result <JsonIgnore> Public Property Image As Bitmap <JsonProperty("image")> Public Property ProductImage As String <JsonProperty("superDepartment")> Public Property SuperDepartment As String Public Property tpnb As Integer Public Property ContentsMeasureType As String <JsonProperty("name")> Public Property Name As String Public Property UnitOfSale As Integer <JsonIgnore> Public Property Description As String <JsonProperty("description")> Public Property RawDescription As String() Public Property AverageSellingUnitWeight As Double Public Property UnitQuantity As String Public Property id As Integer Public Property ContentsQuantity As Double <JsonProperty("department")> Public Property Department As String <JsonProperty("price")> Public Property Price As Double <JsonProperty("unitprice")> Public Property Unitprice As Double End Class End Class