Not sure what you are getting at. There are two main categories of uses of a cryptographic hash.
To check the integrity of a large file with a checksum delivered securely. E.g., the checksum is delivered via a secure channel (say https from a known site) while the file is transmitted via an unsecure channel but checked against the checksum at the end, and
To authenticate a user's identity via a password without storing the password in plaintext in a database. That is if my password is Correct Horse Battery Staple
, I'd store $2a$12$5vc0XINA0MiPvgE3ffLnaOVGqrMeskLKjFvIg4BKryq3v5PXt1oIi
as a 184-bit bcrypt hash in my database (with a 128-bit salt). When a user who knows the secret password logs in, the server compares the hash generated from the password (and salt) with the stored hash and only lets them in if they match.
The chance of an attacker randomly guessing the hash in one trial goes as 1 chance in 2{bit length of the hash}. So for a 256 bit hash, an attacker has a 1 in 115792089237316195423570985008687907853269984665640564039457584007913129639936 chance of randomly guessing the hash in one try (and even if you let them try a billion hashes per second for a billion years on a billion computers, they would have only tried ~1034 password and their chance of only successfully cracking the password is only about 1 in 1042 (e.g., the chance of winning powerball is about 1 in 10^8; so this is similar to your chance of playing powerball five consecutive times and winning the jackpot each of those five times). And again, that was for a 256 bit hash, a 184 or 512 or 1024 bit hash would be exponentially stronger.
Now if you had a hash that had a non-fixed size, that seems to be counterproductive. E.g,. you transfer a 1 GB file over the internet, do you really want to compute a checksum on a checksum that's the same size or larger? Also that would leak information about data that's hashed. E.g., if your hashing function increases in length by two bytes for each byte added, you can find the length of the original password; which could be useful to quickly find the shortest passwords to try to brute force via dictionary search of passwords of that length. And again, 2256 is already strong enough to overcome any feasible attacker, there's no need to try using a hash that's 1 GB in size to prevent an attacker that can make 28589934592 attempts, as there's no feasible way to make 2256 even with very unreasonable assumptions.
That said, key expansion -- that is taking one pseudo-random key of a given relatively-short length (like 128-bits/256-bits) and then using it as a "seed" to create many more pseudo-random keys (of total length much longer than the original key) is commonly used for many cryptographic purposes. E.g., in AES128, a 128 bit key is expanded into 11 round keys that are each 128-bits (e.g., 1408 bits in total) that are used in each round of the AES encryption process.
Similarly, a stream cipher is often essentially equivalent a key expansion; e.g., you can construct a stream cipher from a block cipher operating in counter mode. Basically, say you have a block cipher (like AES256) where you take a 256-bit block of data P, a 256-bit key K, and can get a ciphertext from an encryption function like C = E(K,P). Well if you start with a random 256bit P, you can create a pseudorandom stream of very long length using C0= E(K,P) for the first 256 bits, C1=E(K,P+1) for the next 256 bits, C2= E(K+2) for the next 256 bits. And you can do this to have a pseudorandom stream which you can XOR with your message. And you can do this for many terabytes of data before attacks become computationally feasible.
However, I wouldn't call key expansion/stream cipher the opposite of a hash. They are just different things.