2011-03-12 15 views
17

¿Cuáles son las diferencias entre resizeImage y scaleImage?Imagick :: resizeImage vs Imagick :: scaleImage

que necesito para cambiar el tamaño de una imagen si su tamaño es> $ myLimit

Ejemplo (pseudocódigo):

$myLimit = 1MB 
user uplaod an image of 1000x1000 of 2MB 
2MB > $myLimit 
while($imagefilesize > $myLimit ) { 
    resizeImageBy 0.9%; 
} 

//> output 900x900 image of 900 kB 

En el bloque while, ¿cuál de los dos métodos se debe usar?

Editar: He encontrado algo que podría ayudar: http://www.imagemagick.org/Usage/resize/ Pero, ¿alguien podría simplificar eso?

+0

oh mierda. arreglado es resizeImage vs scale – dynamic

+0

¿qué quieres decir con * size *? ¿anchura? ¿altura? – ifaour

+0

@if: Sí ........ – dynamic

Respuesta

21

La diferencia entre los dos parece ser que scaleImage hace un cambio de tamaño en bruto, basado en píxeles, mientras que resizeImage puede utilizar an interpolation filter:

imagick::INTERPOLATE_AVERAGE 
imagick::INTERPOLATE_BICUBIC 
imagick::INTERPOLATE_BILINEAR 
... 

que es probable que produzca mejores resultados.

Más sobre los diversos métodos de interpolación en Wikipedia.

+0

@ sí, no sé, no conozco estos filtros en profundidad. Yo probaría cada uno, y juzgaría por la calidad de los resultados –

+3

@ yes123: [Aquí] (http://www.docstoc.com/docs/33154923/Filters-for-Common-Resampling-Tasks) encontrarás un papel diciendo que lanczos es realmente una buena opción :). ¡Solo lea la sección de langzos, tiene la conclusión allí! [edit] Hmm, el papel ES de 1990, podría estar bastante desactualizado. Y ahora que lo pienso ... Ya que BAJAS la resolución, no necesita tanto. Incluso podría usar el filtro BOX, simplemente pruebe algunas imágenes para estar seguro. – Yuri

+0

@ sí No sé qué problema está tratando de resolver con la escala: tamaño o resolución del archivo. Creo que deberías hacer una nueva pregunta sobre eso, y explicar cuál es tu objetivo –

1

Brillante, su propia documentación es horrible ... Pero está bien: me parece que resizeImage es más potente, y por lo tanto, la mejor opción ... This link muestra el uso junto con algunas medidas para diferentes filtros.

+0

ye .. el documento aquí carece ... la probabilidad es porque GD está "integrado" y todos usan eso (incluso si sux) – dynamic

0

De acuerdo con mi descubrimiento, cuando desee reducir la escala de una imagen, use resizeImage. Porque le da control sobre la calidad de imagen y el tipo de filtro que desea usar. Pero en el mismo caso, scaleImage también es una buena opción porque cuando tiene que escalar una imagen para decir en un factor de 10 y está usando resizeImage, su imagen resultante tendrá muchos errores gráficos.

En el segundo caso, cuando tiene que escalar e imagen, entonces resizeImage tendrá un error gráfico como marcas, líneas y otras cosas. En ese caso, scaleImage vendrá a rescatar.

Cuestiones relacionadas