mattyamonaca / auto_undercoat

Automatic generation of picture undercoat from line drawings

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error in PSD Generation

lcolok opened this issue · comments

commented

I hope this message finds you well. I wanted to provide some feedback regarding the auto_undercoat code that I have been using on Linux with Docker. I encountered an issue during the final stage of PSD generation, which I did not experience when running the Colab version of the code.

Here is the specific error traceback that occurred:

au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/gradio/routes.py", line 337, in run_predict
au_container_test    |     output = await app.get_blocks().process_api(
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/gradio/blocks.py", line 1015, in process_api
au_container_test    |     result = await self.call_function(
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/gradio/blocks.py", line 833, in call_function
au_container_test    |     prediction = await anyio.to_thread.run_sync(
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/anyio/to_thread.py", line 33, in run_sync
au_container_test    |     return await get_asynclib().run_sync_in_worker_thread(
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 877, in run_sync_in_worker_thread
au_container_test    |     return await future
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 807, in run
au_container_test    |     result = context.run(func, *args)
au_container_test    |   File "/home/auto_undercoat/app.py", line 56, in undercoat
au_container_test    |     filename = save_psd(
au_container_test    |   File "/home/auto_undercoat/undercoat/utils.py", line 47, in save_psd
au_container_test    |     psd.write(fd2)
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/core.py", line 281, in write
au_container_test    |     self.layer_and_mask_info.write(fd, self)
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/layers.py", line 1430, in write
au_container_test    |     self.layer_info.write(fd, header)
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/layers.py", line 1226, in write
au_container_test    |     layer.write_channel_data(fd, header)
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/layers.py", line 1120, in write_channel_data
au_container_test    |     lengths.append(data.write(fd, header, shape))
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/layers.py", line 602, in write
au_container_test    |     codecs.compress_image(
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/codecs.py", line 488, in compress_image
au_container_test    |     return compressors[compression](fd, image, depth, version)
au_container_test    |   File "/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/codecs.py", line 331, in compress_rle
au_container_test    |     packed = packbits.encode(row)
au_container_test    | NameError: name 'packbits' is not defined

After conducting some research, it appears that the issue lies within the pytoshop library. I came across an article that addresses this problem and provides a solution. You can find it here: Article Link

To address this issue, I made the following modifications in the Dockerfile used to build the image:

RUN git clone https://github.com/mattyamonaca/auto_undercoat;

RUN cd auto_undercoat && \
    conda activate py3.10.6 && \
    pip install -r requirements.txt && \
    cd /

RUN conda activate py3.10.6 && \
    pip install packbits

RUN codecs_file="/root/miniconda/envs/py3.10.6/lib/python3.10/site-packages/pytoshop/codecs.py" && \
    backup_file="${codecs_file}.bak" && \
    cp "${codecs_file}" "${backup_file}" && \
    sed -i 's/from \. import packbits/import packbits/g' "${codecs_file}"

RUN echo "Modification complete. pytoshop should now work correctly."

I hope this information is helpful for resolving the issue. I appreciate the effort you have put into developing auto_undercoat, and I would like to encourage you to continue optimizing this project. It has great potential to benefit the community of users.