//copytexture public void SetTexture(string path, Texture _texture, OnCallBackTexRect callback) { if (_texture == null || _texture.width > mWidth || _texture.height > mHeight)//不符合规格 { if (callback != null) { callback(null, new Rect(0, 0, 0, 0), path);//完成一个任务,就回调一个任务 } Debug.Log("Texture Does not meet the standard:" + path); return; } if (_usingRect.ContainsKey(path)) { if (callback != null) { SaveImageData imagedata = _usingRect[path]; imagedata.referenceCount++; Texture2D tex2D = m_tex2DList[imagedata.texIndex]; callback(tex2D, _usingRect[path].rect, path); } return; } GetImageData data = DynamicAtlasManager.Instance.AllocateGetImageData(); data.path = path; data.callback = callback; mGetImageTasks.Add(data); Texture2D tex = (Texture2D)_texture; OnRenderTexture(path, tex, null); }
//copytexture public void SetTexture(string path, Texture _texture, OnCallBackTexRect callback) { if (_texture == null || _texture.width > mWidth || _texture.height > mHeight)//不符合规格 { if (callback != null) { callback(null, new Rect(0, 0, 0, 0), path);//完成一个任务,就回调一个任务 } Debug.Log("Texture Does not meet the standard:" + path); return; } if (_usingRect.ContainsKey(path)) { if (callback != null) { SaveImageData imagedata = _usingRect[path]; imagedata.referenceCount++; Texture2D tex2D = m_tex2DList[imagedata.texIndex]; callback(tex2D, _usingRect[path].rect, path); } return; } Texture2D tex = (Texture2D)_texture; OnLoadRenderTexture(path, tex, callback); }
public SaveImageData AllocateSaveImageData(Rect rect) { if (mSaveImageDataStack.Count > 0) { SaveImageData popData = mSaveImageDataStack.Pop(); popData.rect = rect; return(popData); } SaveImageData data = new SaveImageData(); data.rect = rect; return(data); }
//copytexture public void GetImage(string path, OnCallBackTexRect callback) { if (_usingRect.ContainsKey(path)) { if (callback != null) { SaveImageData imagedata = _usingRect[path]; imagedata.referenceCount++; Texture2D tex2D = m_tex2DList[imagedata.texIndex]; callback(tex2D, _usingRect[path].rect, path); } return; } LoadImageAsync(path, callback, null); }
//bilt public void GetImage(string path, OnCallBackMetRect callback) { if (_usingRect.ContainsKey(path)) { if (callback != null) { SaveImageData imagedata = _usingRect[path]; imagedata.referenceCount++; Material material = m_MaterialList[imagedata.texIndex]; callback(material, _usingRect[path].rect, path); } return; } LoadImageAsync(path, null, callback); }
//image用完之后销毁,同时要在atlas上同步数据 public void RemoveImage(string path, bool isClearRange = false) { if (_usingRect.ContainsKey(path)) { SaveImageData imageData = _usingRect[path]; imageData.referenceCount--; if (imageData.referenceCount == 0)//引用计数为空,则清除 { if (isClearRange) { ClearTexture(imageData.texIndex, imageData.rectangle.rect); } OnMergeArea(imageData.rectangle, imageData.texIndex); _usingRect.Remove(path); DynamicAtlasManager.Instance.ReleaseSaveImageData(imageData); } } }
public IActionResult SaveImage([FromBody] SaveImageData postdata) { var path = image_store.SaveImage(postdata.ImageBytes(), postdata.Number); var image = new Bitmap(path); var result = mnist.Evaluate(image); var name = Path.GetFileName(path); var history = new HistoryModel() { nazwaObrazka = name, numerPrzedstawiany = postdata.Number, results = result }; db.Entry(history).State = EntityState.Added; db.SaveChanges(); return(Ok(result)); }
//copytexture public void GetImage(string path, OnCallBackTexRect callback) { if (_usingRect.ContainsKey(path)) { if (callback != null) { SaveImageData imagedata = _usingRect[path]; imagedata.referenceCount++; Texture2D tex2D = m_tex2DList[imagedata.texIndex]; callback(tex2D, _usingRect[path].rect, path); } return; } GetImageData data = DynamicAtlasManager.Instance.AllocateGetImageData(); data.path = path; data.callback = callback; mGetImageTasks.Add(data); if (mGetImageTasks.Count > 1) { return; } OnGetImage(); }
public void ReleaseSaveImageData(SaveImageData data) { data.rectangle = null; data.referenceCount = 0; mSaveImageDataStack.Add(data); }
void OnRenderTexture(string path, Texture2D data, GetImageData imageData) { if (data == null) { for (int i = mGetImageTasks.Count - 1; i >= 0; i--) { GetImageData item = mGetImageTasks[i]; if (item.path.Equals(path)) { if (item.callback != null) { item.callback(null, new Rect(0, 0, 0, 0), path); } if (AtlasConfig.kUsingCopyTexture) { if (item.callback != null) { item.callback(null, new Rect(0, 0, 0, 0), path);//完成一个任务,就回调一个任务 } } else { if (item.BlitCallback != null) { item.BlitCallback(null, new Rect(0, 0, 0, 0), path);//完成一个任务,就回调一个任务 } } DynamicAtlasManager.Instance.ReleaseGetImageData(item); mGetImageTasks.RemoveAt(i); } } return; } int index; IntegerRectangle useArea = InsertArea(data.width, data.height, out index); Rect uv = new Rect((useArea.x + offset) * mUVXDiv, (useArea.y + offset) * mUVYDiv, (useArea.width - mPadding - offset * 2) * mUVXDiv, (useArea.height - mPadding - offset * 2) * mUVYDiv); if (AtlasConfig.kUsingCopyTexture) { CopyTexture(useArea.x, useArea.y, index, data); } else { BlitTexture(useArea.x, useArea.y, index, data); } SaveImageData _SaveImageData = DynamicAtlasManager.Instance.AllocateSaveImageData(uv); _SaveImageData.texIndex = index; _SaveImageData.rectangle = useArea; _usingRect[path] = _SaveImageData; for (int i = mGetImageTasks.Count - 1; i >= 0; i--) { GetImageData item = mGetImageTasks[i]; if (item.path.Equals(path)) { _usingRect[path].referenceCount = _usingRect[path].referenceCount + 1; if (AtlasConfig.kUsingCopyTexture) { if (item.callback != null) { Texture2D dstTex = m_tex2DList[index]; item.callback(dstTex, uv, path);//完成一个任务,就回调一个任务 } } else { if (item.BlitCallback != null) { Material material = m_MaterialList[index]; item.BlitCallback(material, uv, path);//完成一个任务,就回调一个任务 } } DynamicAtlasManager.Instance.ReleaseGetImageData(item); mGetImageTasks.RemoveAt(i); } } }
void OnRenderTexture(string path, Texture2D data) { if (data == null) { GetImageData getImageData; if (mGetImageTaskDic.TryGetValue(path, out getImageData)) { if (AtlasConfig.kUsingCopyTexture) { if (getImageData.callback != null) { getImageData.callback(null, new Rect(0, 0, 0, 0), path);//完成一个任务,就回调一个任务 } } else { if (getImageData.BlitCallback != null) { getImageData.BlitCallback(null, new Rect(0, 0, 0, 0), path);//完成一个任务,就回调一个任务 } } DynamicAtlasManager.Instance.ReleaseGetImageData(getImageData); if (!mGetImageTaskDic.Remove(path)) { Debug.LogError($"无法删除GetImageData:{path}"); } } else { Debug.Log($"没有此GetImageData任务:{path}"); } return; } int index; IntegerRectangle useArea = InsertArea(data.width, data.height, out index); Rect uv = new Rect((useArea.x + offset) * mUVXDiv, (useArea.y + offset) * mUVYDiv, (useArea.width - mPadding - offset * 2) * mUVXDiv, (useArea.height - mPadding - offset * 2) * mUVYDiv); if (AtlasConfig.kUsingCopyTexture) { CopyTexture(useArea.x, useArea.y, index, data); } else { BlitTexture(useArea.x, useArea.y, index, data); } SaveImageData _SaveImageData = DynamicAtlasManager.Instance.AllocateSaveImageData(uv); _SaveImageData.texIndex = index; _SaveImageData.rectangle = useArea; _usingRect[path] = _SaveImageData; { GetImageData getImageData; if (mGetImageTaskDic.TryGetValue(path, out getImageData)) { _usingRect[path].referenceCount = _usingRect[path].referenceCount + 1; if (AtlasConfig.kUsingCopyTexture) { if (getImageData.callback != null) { Texture2D dstTex = m_tex2DList[index]; getImageData.callback(dstTex, uv, path); //完成一个任务,就回调一个任务 } } else { if (getImageData.BlitCallback != null) { Material material = m_MaterialList[index]; getImageData.BlitCallback(material, uv, path); //完成一个任务,就回调一个任务 } } DynamicAtlasManager.Instance.ReleaseGetImageData(getImageData); mGetImageTaskDic.Remove(path); } } }