ãç»åããããã«çž®å°ããæ¹æ³ãæããŠãã ããã
ãåäŸãæããã¡ãã³ã®çµµ(250Ã250)ã52Ã52ã«çž®å°ãããã®ã§ãããäžèšã®ãã
ã°ã©ã ãçšãããšãæ·»ä»ç»åã®device.pngã«ããããã«(å·Šäžã®çµµ)ãæ±ãç»åã«
ãããªããŸããã
ãmelon2.pngçšåºŠã®ååããšã©ããŠããçµµã«ãããã®ã§ãããã©ã®ããã«ããã°
ããã®ã§ãããããèªåã§Lanczosãªã©ã®ã¢ã«ãŽãªãºã ãå®è£
ããããæ¹æ³ã¯ãª
ãã®ã§ããããã
ããããããé¡ãããŸãã
String toFile = "/sdcard/luarida/melon.png";
Bitmap bmp = BitmapFactory.decodeFile( toFile );
Bitmap workBmp = Bitmap.createBitmap( 300, 300, Bitmap.Config.ARGB_8888);
Canvas workcanvas = new Canvas( workBmp );
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
int w = bmp.getWidth();
int h = bmp.getHeight();
workcanvas.drawBitmap(bmp, new Rect(0, 0, w, h), new Rect(0, 0, 52, 52),
paint);
workcanvas.drawBitmap(bmp, new Rect(0, 0, w, h), new Rect(0, 60, 250,
310), paint);
--
å±±æ¬äžäžç· (Minao Yamamoto) ---------------- ãã³ãã«:ãããµ -----
E-Mail: taro...@gmail.com
ãã¡ãŒã«ãæžããŠããããããããšè©ŠããŠããŸãããäžèšã®ãœãŒã¹ã®ããã«ã
matrix.postScale()ã䜿ãæ¹æ³ããBitmapDrawableã§setAntiAliasã䜿ãæ¹æ³ã§ãã
ããããã®å Žåããåããããªç»åããåŸãããŸããã§ãããçµæç»åãæ·»ä»ã
ãŸããããã°ã©ã ã«ããããªãšãããããã®ã§ããããã
ã
String refFile = "/sdcard/luarida/melon2.png";
String toFile = "/sdcard/luarida/melon.png";
Bitmap refbmp = BitmapFactory.decodeFile( refFile );
Bitmap bmp = BitmapFactory.decodeFile( toFile );
Bitmap workBmp = Bitmap.createBitmap( 300, 300, Bitmap.Config.ARGB_8888);
Canvas workcanvas = new Canvas( workBmp );
Matrix matrix = new Matrix();
float rx = 52f/250f;
float ry = 52f/250f;
matrix.postScale( rx, ry );
Bitmap scaledBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),
bmp.getHeight(), matrix,true);
BitmapDrawable bmd = new BitmapDrawable(bmp);
bmd.setAntiAlias(true);
bmd.setBounds(0,0,52,52);
//BitmapDrawableã®ã¢ã³ããšã€ãªã¢ã¹æã
bmd.draw(workcanvas);
bmd.setAntiAlias(false);
bmd.setBounds(52,0,104,52);
//BitmapDrawableã®ã¢ã³ããšã€ãªã¢ã¹ç¡ã
bmd.draw(workcanvas);
int a = scaledBitmap.getWidth();
int b = scaledBitmap.getHeight();
int w = bmp.getWidth();
int h = bmp.getHeight();
//matrix.postScaleã䜿ã£ãŠçž®å°
workcanvas.drawBitmap(scaledBitmap, new Rect(0, 0, a, b), new Rect(104,
0, 156, 52), null);
//ãã ã®çž®å°
workcanvas.drawBitmap(bmp, new Rect(0, 0, w, h), new Rect(156, 0, 208,
52), null);
//åç
§
workcanvas.drawBitmap(refbmp, new Rect(0, 0, 52, 52), new Rect(208, 0,
208+52, 52 ), null);
//å寞倧
workcanvas.drawBitmap(bmp, new Rect(0, 0, w, h), new Rect(0, 60, w,
60+h), null);
E-Mail: taro...@gmail.com
<img src=\""+image_uri+"\" width=\"210\" height=\"210\"/>
ãšããŠããéšåã®widthãšheightãå€æŽããŠããã ããã°ããããªãã«çž®å°ã§ãããšæããŸãã
--
ãã®ã¡ãŒã«ã¯ Google ã°ã«ãŒãã®ã°ã«ãŒããæ¥æ¬Androidã®äŒãã®ç»é²è ã«éãããŠããŸãã
ãã®ã°ã«ãŒãã«æçš¿ããã«ã¯ãandroid-g...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
ãã®ã°ã«ãŒãããéäŒããã«ã¯ãandroid-group-j...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
詳现ã«ã€ããŠã¯ãhttp://groups.google.com/group/android-group-japan?hl=ja ãããã®ã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ããã
ãæŸæ°žãããããã«ã¡ã¯ã
> ç§ã¯WebViewã§ç»åãèªã¿èŸŒãã§ã
> çž®å°çã¯HTMLãCSSã§èšè¿°ããŠã¿ãŸããã
ãããããããæ¹ãããã®ã§ãããåèã«ãªããŸãããããæ¥ç¶ãå¿
é ã«ãªããŸ
ãããç§ã®å Žåãwifiçµç±ãã䜿ã£ãŠããªãã®ã§ãååžžææ¥ç¶ç¶æ
ãªã®ã§ãé£ã
ããšããã§ãã
ããã£ãã®ã¡ãŒã«åŸãèªåã§ãLanczosåŠçãå®è£
ããŠã¿ãŸããã
ãåŠçãé
ãå²ãã«ã¯ãçµæãããŸãã¡ã§ãåã£ããªãã»ã»ã»ããšããæãã§
ããæ·»ä»ç»åã®å³ãã2ã€ç®ã§ãã
ãããå°ããæ©ãã§èŠãŠãã ããªããããããŸãã
private Bitmap Lanczos(Bitmap bmp, float sc) {
int width = bmp.getWidth();
int height = bmp.getHeight();
int[] pixels = new int[width * height];
bmp.getPixels(pixels, 0, width, 0, 0, width, height);
int w = (int)((float)width*sc);
int h = (int)((float)height*sc);
int[] retpixels = new int[w * h];
int n = 3; // Nå€
int nx = n-1;
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
double x0 = (float)x/sc;
double y0 = (float)y/sc;
int xBase = (int)x0;
int yBase = (int)y0;
int color = 0;
// ã©ã³ãã©ã·ã¥ã®åŠçç¯å²
if (xBase >= nx && xBase < width - n && yBase >= nx && yBase < height
- n) {
double[] color_element = new double[3];
color_element[0] = 0.0;
color_element[1] = 0.0;
color_element[2] = 0.0;
double w_total = 0.0;
// åšèŸº(a*2)^2ç»çŽ ãååŸããŠåŠç
for (int i = -nx; i <= n; i++) {
for (int j = -nx; j <= n; j++) {
int xCurrent = xBase + i;
int yCurrent = yBase + j;
// è·é¢æ±ºå®
double distX = Math.abs(xCurrent - x0);
double distY = Math.abs(yCurrent - y0);
// éã¿ä»ã
double weight = 0.0;
if (distX == 0.0) {
weight = 1.0;
} else if (distX < n) {
double dPIx = Math.PI*distX;
weight = (Math.sin(dPIx)*Math.sin(dPIx/n))/(dPIx*(dPIx/n));
} else {
continue;
}
if (distY == 0.0) {
;
} else if (distY < n) {
double dPIy = Math.PI*distY;
weight *= (Math.sin(dPIy)*Math.sin(dPIy/n))/(dPIy*(dPIy/n));
} else {
continue;
}
// ç»çŽ ååŸ
int color_process = pixels[xCurrent+yCurrent*width];
for (int k = 0; k < 3; k++) {
color_element[k] += ((color_process >> k*8) & 0xff)*weight;
}
w_total += weight;
}
}
for (int i = 0; i < 3; i++) {
if (w_total != 0) color_element[i] /= w_total;
color_element[i] = (color_element[i] > 255) ? 255:
(color_element[i] < 0) ? 0: color_element[i];
color += (int)color_element[i] << i*8;
}
}
retpixels[x+y*w] = 0xff000000 + color;
}
}
Bitmap newbmp = Bitmap.createBitmap( w, h, Bitmap.Config.ARGB_8888);
newbmp.setPixels(retpixels, 0, w, 0, 0, w, h);
return newbmp;
}
(2011/01/06 1:48), Hiroshi Matsunaga wrote:
> ãããµãã
>
> æŸæ°žãšç³ããŸãã
>
> ã¹ã¬ã®æµããšå®å
šã«éãæ¹æ³ã§ããã
> æè¿ç§ãç»åã®çž®å°ãããªãã³ã°ãè©ŠããŠããã®ã§ã
> åèã«ãªãã°ãšæããè¿ä¿¡ãããŠããã ããŸãã
>
> ç§ã¯WebViewã§ç»åãèªã¿èŸŒãã§ã
> çž®å°çã¯HTMLãCSSã§èšè¿°ããŠã¿ãŸããã
>
> http://matsuhilog.blogspot.com/2011/01/webview.html
> <http://matsuhilog.blogspot.com/2011/01/webview.html>ã«ã¡ã¢ãåã£ãŠãã
> ã®ãšãµã³ãã«ãœãŒã¹ã®ãªã³ã¯ãããã®ã§ã
> åèã«ããŠããã ããã°ãšæããŸãã
>
> <img src=\""+image_uri+"\" width=\"210\" height=\"210\"/>
>
> ãšããŠããéšåã®widthãšheightãå€æŽããŠããã ããã°ããããªãã«çž®å°ã§ãããšæããŸãã
>
>
> 以äžã§ãã
>
> 2011幎1æ6æ¥1:13 ãããµ <taro...@gmail.com <mailto:taro...@gmail.com>>:
> >> E-Mail: taros...@gmail.com <mailto:taros...@gmail.com>
> >>
> >> device.png
> >> 12K衚瀺ããŠã³ããŒã
> >>
> >> melon2.png
> >> 2K衚瀺ããŠã³ããŒã
> >
>
> --
> å±±æ¬äžäžç· (Minao Yamamoto) ---------------- ãã³ãã«:ãããµ -----
> E-Mail: taro...@gmail.com <mailto:taro...@gmail.com>
>
> --
> ãã®ã¡ãŒã«ã¯ Google ã°ã«ãŒãã®ã°ã«ãŒããæ¥æ¬Androidã®äŒãã®ç»é²è
ã«
> éãããŠããŸãã
> ãã®ã°ã«ãŒãã«æçš¿ããã«ã¯ãandroid-g...@googlegroups.com
> <mailto:android-g...@googlegroups.com> ã«ã¡ãŒã«ãéä¿¡ããŠãã
> ããã
> ãã®ã°ã«ãŒãããéäŒããã«ã¯ãandroid-group-
> japan+un...@googlegroups.com
> <mailto:android-group-japan%2Bunsu...@googlegroups.com> ã«ã¡ãŒã«
> ãéä¿¡ããŠãã ããã
> 詳现ã«ã€ããŠã¯ãhttp://groups.google.com/group/android-group-
> japan?hl=ja ãããã®ã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ããã
>
>
>
>
> --
> Hiroshi Matsunaga
> email: hiroshi.82...@gmail.com
> <mailto:hiroshi.82...@gmail.com>
>
> --
> ãã®ã¡ãŒã«ã¯ Google ã°ã«ãŒãã®ã°ã«ãŒããæ¥æ¬Androidã®äŒãã®ç»é²è
ã«éã
> ããŠããŸãã
> ãã®ã°ã«ãŒãã«æçš¿ããã«ã¯ãandroid-g...@googlegroups.com ã«ã¡ãŒ
> ã«ãéä¿¡ããŠãã ããã
> ãã®ã°ã«ãŒãããéäŒããã«ã¯ãandroid-group-
> japan+un...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
> 詳现ã«ã€ããŠã¯ãhttp://groups.google.com/group/android-group-japan?hl=ja
> ãããã®ã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ããã
--
æŸæ°žã§ãã
倱瀌ããŸããã
ç§ãæã£ãŠããå®æ©ã¯simãããŠããã®ã§æ°ãã€ããªãã£ãã§ãã
SDcardã«ä¿åããŠããç»åãçž®å°ã§ããã®ã§ãã圹ã«ç«ãŠãããšæã£ãã®ã§ãããWebViewãå©çšããå Žåã¯ããããã¯ãŒã¯æ¥ç¶ãå¿
é ã ã£ãã®ã§ããããã
ãã¡ãããå匷ã«ãªããŸããã
ããããããBi-CubicãšãBi-Linearãšãããããããšå®è£
ããŠè©ŠããŠããã®ã§
ãããçµå±ãèãæ¹ãå€ããŸããã
ãäžèšã®ãããªã¢ã«ãŽãªãºã ã§ãmatrix.postScale()ã䜿ã£ãŠçž®å°ããããã°ã©
ã ã«ããŠã¿ãŸããã
ãããã ãšãé«éã§åç §ç»åãšã»ãŒåæ§ã®ç»åãåŸãããšãã§ããŸããã
Matrix matrix = new Matrix();
float n = 4.0f;
float sc = (float)Math.exp(Math.log(52.0/250.0)/n);
matrix.postScale( sc, sc );
Bitmap scaledBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),
bmp.getHeight(), matrix,true);
for( int i=0; i<(int)n-1; i++ ){
scaledBitmap = Bitmap.createBitmap(scaledBitmap, 0, 0,
scaledBitmap.getWidth(), scaledBitmap.getHeight(), matrix,true);
}
ããããŸããããéšããããŸããã
ãè¿ä¿¡ããŠããã ããçæ§ãããããšãããããŸããã
> if (xBase>= nx&& xBase< width - n&& yBase>= nx&& yBase< height
> color_element[k] += ((color_process>> k*8)& 0xff)*weight;