public void Read(BinaryReader reader) { this.id = reader.ReadInt64(); this.owner_id = reader.ReadInt64(); this.title = reader.ReadString(); this.thumb = reader.ReadGeneric <ThumbData>(); }
// Main function private void GenerateThumbnails() { while (true) { if (GenerateNewThumbnails) { m_bGenerationCompleted = false; lock (_ThumbnailsFiles) { // Add a button for each file for (int i = 0; i < _ThumbnailsFiles.Length; i++) { if (_ThumbnailsFiles[i].Extension.ToLower() == ".png" || _ThumbnailsFiles[i].Extension.ToLower() == ".jpg" || _ThumbnailsFiles[i].Extension.ToLower() == ".jpeg" || _ThumbnailsFiles[i].Extension.ToLower() == ".gif" || _ThumbnailsFiles[i].Extension.ToLower() == ".bmp") { ThumbData _data = new ThumbData(); _data._fullName = _ThumbnailsFiles[i].FullName; _data._name = _ThumbnailsFiles[i].Name; try { System.Drawing.Image image = System.Drawing.Image.FromFile(_data._fullName); System.Drawing.Image thumb = image.GetThumbnailImage(ThumbSize, ThumbSize, () => false, System.IntPtr.Zero); _data._bytes = imageToByteArray(thumb); if (image.Width == image.Height) { _data.SizeX = ThumbSize; _data.SizeY = ThumbSize; } else if (image.Width > image.Height) { _data.SizeX = ThumbSize; _data.SizeY = ThumbSize * ((float)image.Height / (float)image.Width); } else if (image.Width < image.Height) { _data.SizeX = ThumbSize * ((float)image.Width / (float)image.Height); _data.SizeY = ThumbSize; } thumb.Dispose(); image.Dispose(); } catch (System.ArgumentException e) { Debug.LogError("ArgumentException when generating thumbnail " + i + ".\n\n" + e.Message); } catch (System.IO.FileNotFoundException e) { Debug.LogError("FileNotFoundException when generating thumbnail " + i + ".\n\n" + e.Message); } catch (System.OutOfMemoryException e) { Debug.LogError("OutOfMemoryException when generating thumbnail " + i + ".\n\n" + e.Message); } catch { Debug.LogError("Unknow error when generating thumbnail " + i + ".\n\n"); } lock (m_pImagesBytesArray) { m_pImagesBytesArray.Add(_data); } if (CancelThread || CancelGeneration) { break; } } } } m_bGenerationCompleted = true; GenerateNewThumbnails = false; } if (CancelThread) { CancelThread = false; break; } if (CancelGeneration) { m_bGenerationCompleted = true; GenerateNewThumbnails = false; lock (m_pImagesBytesArray) { m_pImagesBytesArray.Clear(); } lock (_ThumbnailsFiles) { _ThumbnailsFiles = new FileInfo[0]; } CancelGeneration = false; } Thread.Sleep(100); } }