@jood/file-reader
javascript clientside file reader
FileReadStream
(ํ๋ฒ์ ์ฝ๊ธฐ ์ด๋ ค์ด)ํ์ผ ์ฝ๊ธฐ
- chunkSize: number (default: 1024 * 1024 * 10) - ํ์ผ์ 1ํ ์ฝ์ ๋ byte ๋
- responseType: FileReadResponseType (BLOB) - ํ์ผ์ ์ฝ๊ธฐ ์๋ฃ ์ ๋ฐํ๋ ๊ฒฐ๊ณผ(Blob || ArrayBuffer[])
- BLOB - ๊ฒฐ๊ณผ๊ฐ์ blob(Blob) ์ผ๋ก ๋ฐํ.
- BUFFER - ๊ฒฐ๊ณผ๊ฐ์ buffers(ArrayBuffers[]) ๋ก ๋ฐํ.
Promise
import { FileReadStream, FileReadEvent, FileReadEventType, FileReadResponseType } from '@jood/file-reader';
const onFileInputChange = async (evt: Event) => {
const file = (evt.target as HTMLInputElement).files[0];
const reader = new FileReadStream(file, {
chunkSize: 1024 * 10,
responseType: FileReadResponseType.BLOB,
});
try {
const { state } = await reader.start();
const {
fileName,
fileType,
fileSize,
fileLastModified,
total, // byte total
readed, // byte read
chunkSize, // config chunkSize
responseType, // config responseType
blob, // if responseType BLOB
buffers, // if responseType BUFFER
} = state;
console.log('resolve', state);
} catch (err) {
console.error(err);
}
}
Observable
import { FileReadStream, FileReadEvent, FileReadEventType, FileReadResponseType } from '@jood/file-reader';
const onFileInputChange = (evt: Event) => {
const file = (evt.target as HTMLInputElement).files[0];
const reader = new FileReadStream(file, {
chunkSize: 1024 * 10,
responseType: FileReadResponseType.BLOB,
});
console.log(reader);
reader.observeState().subscribe((evt) => {
const { type, state, error } = evt;
if (type === FileReadEventType.CHANGE) {
console.log('change', state.readed / state.total);
} else if (type === FileReadEventType.RESOLVE) {
console.log('resolve', state.blob);
} else if (type === FileReadEventType.REJECT) {
console.log('reject', error);
}
});
reader.start();
}
BlobImageResize
์ด๋ฏธ์ง์ ๋ฆฌ์ฌ์ด์ง, quality ๋ณด์
-
expectWidth: number - ๋ฆฌ์ฌ์ด์ง ์์ width
-
expectHeight: number - ๋ฆฌ์ฌ์ด์ง ์์ height
-
resizeType: ResizeType (default=ResizeType.SCALE) - ๋ฆฌ์ฌ์ด์ง ํ์ . expectWidth, expectHeight ๊ธฐ์ค.
- COVER - ์ฌ๋ฐฑ ์์ด expect ์ฌ์ด์ฆ๋ฅผ ์ฑ์. ์๋ณธ์ด expect ์ฌ์ด์ฆ ๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋๋ฆฌ์ง ์์.
- COVER_STRETCH - ์ฌ๋ฐฑ ์์ด expect ์ฌ์ด์ฆ๋ฅผ ์ฑ์. ์๋ณธ์ด expect ์ฌ์ด์ฆ ๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋๋ฆผ.
- SCALE - ์ด๋ฏธ์ง ๋น์จ ์ ์ง, ์๋ณธ์ด expect ์ฌ์ด์ฆ ๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋๋ฆฌ์ง ์์.
- SCALE_STRETCH - ์ด๋ฏธ์ง ๋น์จ ์ ์ง, ์๋ณธ์ด expect ์ฌ์ด์ฆ ๋ณด๋ค ์์ ๊ฒฝ์ฐ ์์๊ฒ์ ๊ธฐ์ค์ผ๋ก ๋๋ฆผ.
-
quality(default=0.9) - ์ด๋ฏธ์ง ํ๋ฆฌํฐ((0 < n < 1) ~ 1);
-
expectContentType: string (default=undefined) - quality ๋ image/jpeg ํ์ ์ธ ๊ฒฝ์ฐ๋ง ์ ์ฉ๋จ, ๊ฐ์ ๋ก type ์ ์ง์ ํ์ฌ quality ์ ์ฉ์ ํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ์ฉ. \ ์) image/png ํ์ ์ธ file ์ ๊ฒฝ์ฐ image/jpeg ๋ก ๊ฐ์ ์ง์ ํ๋ฉด quality ์ ์ฉ์ ๊ฐ๋ฅํ๊ณ , ๋์ ์ด๋ฏธ์ง์ transparent ์์ญ์ด canvas ์ ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ์์ผ๋ก ์ฑ์์ง.
-
fillBgColor: string (default=undefined) - expectContentType ์ ์ง์ ํ๋ ๊ฒฝ์ฐ transparent ์ฒ๋ฆฌ๊ฐ canvas ์ ๊ธฐ๋ณธ์์์ผ๋ก ์ฑ์์ง๋๋ฐ ๊ทธ๋ ์ ์ฉ๋ color ๊ฐ.
-
applyOrientation: boolean (default=0) - exif orientation ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ orientation ๊ฐ์ ์ ์ฉํ์ฌ resize.
์ฐธ๊ณ : ์ด๋ฏธ์ง ์ํ github
์ฐธ๊ณ : iPhone Photo Orientation/Rotation in Browser
Promise
import { BlobImageResize } from '@jood/file-reader';
const onFileInputChange = async (evt: Event) => {
const file = (evt.target as HTMLInputElement).files[0];
const blob = new Blob([file], { type: file.type });
const resizer = new BlobImageResize(blob, {
resizeType: ResizeType.COVER,
expectWidth: 200,
expectHeight: 200,
quality: 0.9,
});
try {
const { blob, width, height } = await resizer.create();
const resizedFile = new File([blob], file.name, {
lastModified: file.lastModified || Date.now(),
});
console.log(resizedFile);
} catch (err) {
console.error(err);
}
}
See
This library was generated with Angular CLI