mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 19:00:09 +00:00
.makeResizedImages(..) mostly works correctly, still missing transforms + UI...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
a34591065a
commit
669ee51297
@ -119,7 +119,9 @@ var SharpActions = actions.Actions({
|
|||||||
this.previewConstructorWorker && this.previewConstructorWorker.kill()
|
this.previewConstructorWorker && this.previewConstructorWorker.kill()
|
||||||
delete this.previewConstructorWorker }],
|
delete this.previewConstructorWorker }],
|
||||||
|
|
||||||
// XXX should this resize up??? ...option???
|
// XXX Q: if skipSmaller and overwrite: 'backup' and image smaller (skiped) do we backup???
|
||||||
|
// ...I think no...
|
||||||
|
// XXX make backup name pattern configurable...
|
||||||
// XXX add transform/crop support...
|
// XXX add transform/crop support...
|
||||||
// XXX revise logging...
|
// XXX revise logging...
|
||||||
makeResizedImage: ['- Image/',
|
makeResizedImage: ['- Image/',
|
||||||
@ -141,18 +143,28 @@ var SharpActions = actions.Actions({
|
|||||||
// output image name...
|
// output image name...
|
||||||
//
|
//
|
||||||
// Used if processing a single image, ignored otherwise.
|
// Used if processing a single image, ignored otherwise.
|
||||||
name: <str>,
|
name: null | <str>,
|
||||||
|
|
||||||
// image name pattern and data...
|
// image name pattern and data...
|
||||||
//
|
//
|
||||||
// NOTE: for more info on pattern see: .formatImageName(..)
|
// NOTE: for more info on pattern see: .formatImageName(..)
|
||||||
pattern: <str>,
|
pattern: null | <str>,
|
||||||
data: { .. },
|
data: null | { .. },
|
||||||
|
|
||||||
|
// if true and image is smaller than size enlarge it...
|
||||||
|
//
|
||||||
|
// default: null / false
|
||||||
|
enlarge: null | true,
|
||||||
|
|
||||||
// overwrite, backup or skip (default) existing images...
|
// overwrite, backup or skip (default) existing images...
|
||||||
//
|
//
|
||||||
// default: null / false
|
// default: null / false
|
||||||
overwrite: true | 'backup' | false,
|
overwrite: null | true | 'backup',
|
||||||
|
|
||||||
|
// if true do not write an image if it's smaller than size...
|
||||||
|
//
|
||||||
|
// default: null / false
|
||||||
|
skipSmaller: null | true,
|
||||||
|
|
||||||
// XXX not implemented...
|
// XXX not implemented...
|
||||||
transform: ...,
|
transform: ...,
|
||||||
@ -162,6 +174,7 @@ var SharpActions = actions.Actions({
|
|||||||
, }
|
, }
|
||||||
|
|
||||||
|
|
||||||
|
NOTE: all options are optional.
|
||||||
NOTE: this will not overwrite existing images.
|
NOTE: this will not overwrite existing images.
|
||||||
`,
|
`,
|
||||||
function(images, size, path, options={}){
|
function(images, size, path, options={}){
|
||||||
@ -200,8 +213,12 @@ var SharpActions = actions.Actions({
|
|||||||
name,
|
name,
|
||||||
pattern,
|
pattern,
|
||||||
data,
|
data,
|
||||||
|
|
||||||
// file handling...
|
// file handling...
|
||||||
|
enlarge,
|
||||||
|
skipSmaller,
|
||||||
overwrite,
|
overwrite,
|
||||||
|
|
||||||
// transformations...
|
// transformations...
|
||||||
// XXX not implemented...
|
// XXX not implemented...
|
||||||
transform,
|
transform,
|
||||||
@ -238,57 +255,80 @@ var SharpActions = actions.Actions({
|
|||||||
|
|
||||||
logger && logger.emit('queued', to)
|
logger && logger.emit('queued', to)
|
||||||
|
|
||||||
// existing image...
|
var img = sharp(source)
|
||||||
if(fse.existsSync(to)){
|
return (skipSmaller ?
|
||||||
// rename...
|
// skip source if smaller...
|
||||||
if(overwrite == 'backup'){
|
img
|
||||||
var i = 0
|
.metadata()
|
||||||
while(fse.existsSync(`${to}.${timestamp}'-bak`+ (i || ''))){
|
.then(function(m){
|
||||||
i++ }
|
// skip...
|
||||||
fse.renameSync(
|
if((fit == 'inside'
|
||||||
to,
|
&& Math.max(m.width, m.height) < size)
|
||||||
fse.existsSync(`${to}.${timestamp}'-bak`+ (i || '')))
|
|| (fit == 'outside'
|
||||||
// remove...
|
&& Math.min(m.width, m.height) < size)){
|
||||||
} else if(overwrite){
|
logger && logger.emit('skipping', to)
|
||||||
fse.removeSync(to)
|
return }
|
||||||
// skip...
|
return img })
|
||||||
} else {
|
: Promise.resolve(img))
|
||||||
logger && logger.emit('skipping', to)
|
// write...
|
||||||
return } }
|
.then(function(img){
|
||||||
|
return img
|
||||||
|
&& ensureDir(pathlib.dirname(to))
|
||||||
|
.then(function(){
|
||||||
|
// handle existing image...
|
||||||
|
if(fse.existsSync(to)){
|
||||||
|
// rename...
|
||||||
|
// XXX make backup name pattern configurable...
|
||||||
|
if(overwrite == 'backup'){
|
||||||
|
var i = 0
|
||||||
|
while(fse.existsSync(`${to}.${timestamp}.bak`+ (i || ''))){
|
||||||
|
i++ }
|
||||||
|
fse.renameSync(
|
||||||
|
to,
|
||||||
|
`${to}.${timestamp}.bak`+ (i || ''))
|
||||||
|
// remove...
|
||||||
|
} else if(overwrite){
|
||||||
|
fse.removeSync(to)
|
||||||
|
// skip...
|
||||||
|
} else {
|
||||||
|
logger && logger.emit('skipping', to)
|
||||||
|
return } }
|
||||||
|
|
||||||
return ensureDir(pathlib.dirname(to))
|
// write...
|
||||||
.then(function(){
|
return img
|
||||||
return sharp(source)
|
.clone()
|
||||||
.clone()
|
// handle transform (.orientation / .flip) and .crop...
|
||||||
// handle transform (.orientation / .flip) and .crop...
|
.run(function(){
|
||||||
.run(function(){
|
// XXX
|
||||||
// XXX
|
if(transform || crop){
|
||||||
if(transform || crop){
|
throw new Error('.makeResizedImage(..): '
|
||||||
throw new Error('.makeResizedImage(..): '
|
+[
|
||||||
+[
|
transform ? 'transform' : [],
|
||||||
transform ? 'transform' : [],
|
crop ? 'crop' : [],
|
||||||
crop ? 'crop' : [],
|
].flat().join(' and ')
|
||||||
].flat().join(' and ')
|
+' not implemented...') }
|
||||||
+' not implemented...') }
|
// XXX need clear spec defining what
|
||||||
// XXX need clear spec defining what
|
// order transforms are applied
|
||||||
// order transforms are applied
|
// and in which coordinates we
|
||||||
// and in which coordinates we
|
// crop (i.e. pre/post transform)...
|
||||||
// crop (i.e. pre/post transform)...
|
if(transform){
|
||||||
if(transform){
|
// XXX
|
||||||
}
|
}
|
||||||
if(crop){
|
if(crop){
|
||||||
}
|
// XXX
|
||||||
})
|
}
|
||||||
.resize({
|
})
|
||||||
width: size,
|
.resize({
|
||||||
height: size,
|
width: size,
|
||||||
fit: fit,
|
height: size,
|
||||||
})
|
fit: fit,
|
||||||
.withMetadata()
|
withoutEnlargement: !enlarge,
|
||||||
.toFile(to)
|
})
|
||||||
.then(function(){
|
.withMetadata()
|
||||||
logger
|
.toFile(to)
|
||||||
&& logger.emit('done', to) })}) })) }],
|
.then(function(){
|
||||||
|
logger
|
||||||
|
&& logger.emit('done', to) }) }) }) })) }],
|
||||||
|
|
||||||
// XXX use .makeResizedImage(..)
|
// XXX use .makeResizedImage(..)
|
||||||
// XXX should this account for non-jpeg images???
|
// XXX should this account for non-jpeg images???
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user