This question can be answered from two standpoints in my opinion. The first one would be an operating system question. Which is what the other users half-heartedly pressured this question to be, by removing the C++ tag. The second would be minizip-specific.
I'll start to answer the first one, then proceed with the second one.
It completely depends on which system you use and what it understands as a file.
Generally speaking, yes a FILE* can be a memory-mapped file.
Therefore you should be able to compress/decompress it.
You will have to look into the manuals for your operating system to find out, how to create a memory-mapped file.
For UNIX-like systems, this is usually fmemopen(3). But other solutions like mapping /dev/zero could work, although I haven't personally tried that. [1][2]
For Windows, an approach exists, by creating a file descriptor, with O_SHORTLIVED and O_TEMPORARY, then using that with fdopen to obtain a FILE*.[3]
In the minizip-specific case, the library accepts a struct "zlib_file_func_def" in it's unzOpen function, where you can specify your implementations of the fopen, fread, fwrite, etc.... file functions.
You could easily create a class, that implements these functions. I'm assuming the OP's interest in in C++.
There, a class could be created to wrap these functions. Let's call it "MemoryFile". "fopen" would then create a new instance of this class, while "fclose" would call it's destructor.
To implement this class, either simple tracking could be implemented oneself. Or probably better yet, an existing class like std::ispanstream could be used. [4]
[1] What is the purpose of MAP_ANONYMOUS flag in mmap system call?
[2] Is it possible to create a C FILE object to read/write in memory
[3] https://github.com/Arryboom/fmemopen_windows/blob/master/libfmemopen.c