Ejemplo n.º 1
0
    //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);
    }
Ejemplo n.º 2
0
    //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);
    }
Ejemplo n.º 4
0
 //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);
 }
Ejemplo n.º 5
0
    //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);
    }
Ejemplo n.º 6
0
 //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);
         }
     }
 }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
    //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);
 }
Ejemplo n.º 10
0
    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);
            }
        }
    }
Ejemplo n.º 11
0
    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);
            }
        }
    }