Сохранить изображение из webView
Сохранить изображение из webView
не подскажите где почитать про сохранение изображений из webView. Как это все реализовать?
Re: Сохранить изображение из webView
Помогите с кодом. Программа запускается но сохранять не хочет изображение. Возможно неправильно вызываю метод
Точнее вот это место
Код: Выделить всё
package cd.fon;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.format.Time;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webView1;
final int MENU_SAVE_ID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView1 = (WebView)findViewById(R.id.webView1);
webView1.loadUrl("http://moloca.ucoz.net/main_256.jpg");
}
String folderToSave = Environment.getExternalStorageDirectory().toString();
private String SavePicture (WebView webView1) {
OutputStream fOut = null;
Time time = new Time();
time.setToNow();
try {
File file = new File(folderToSave, Integer.toString(time.year) + Integer.toString(time.month) + Integer.toString(time.monthDay) + Integer.toString(time.hour) + Integer.toString(time.minute) + Integer.toString(time.second) +".jpg"); // создать уникальное имя для файла основываясь на дате сохранения
fOut = new FileOutputStream(file);
Bitmap bitmap = (Bitmap) webView1.getDrawingCache();
bitmap.compress(Bitmap.CompressFormat.JPEG, 0, fOut); // сохранять картинку в jpeg-формате с 85% сжатия.
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); // регистрация в фотоальбоме
}
catch (Exception e){
return e.getMessage();
}return "";
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.add(0, MENU_SAVE_ID, 0, "SAVE");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_SAVE_ID:
SavePicture(webView1);
}
return false;
}}
Точнее вот это место
Код: Выделить всё
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_SAVE_ID:
SavePicture(webView1);
}
return false;
Re: Сохранить изображение из webView
вместо " SavePicture(webView1); " вставь "String str =SavePicture(webView1); Log.d("t1",str);" И посмотри то, что выведется. Зачем же тебе "try catch" - тогда, если ты ошибку не выводишь?
Re: Сохранить изображение из webView
просто код взят с хабра, если бы он работал то "try cath" связка мне и вовсе не нужна. Сейчас попробую ваш советadarash писал(а):вместо " SavePicture(webView1); " вставь "String str =SavePicture(webView1); Log.d("t1",str);" И посмотри то, что выведется. Зачем же тебе "try catch" - тогда, если ты ошибку не выводишь?
Re: Сохранить изображение из webView
ругает вот на это как я понялNik писал(а):просто код взят с хабра, если бы он работал то "try cath" связка мне и вовсе не нужна. Сейчас попробую ваш советadarash писал(а):вместо " SavePicture(webView1); " вставь "String str =SavePicture(webView1); Log.d("t1",str);" И посмотри то, что выведется. Зачем же тебе "try catch" - тогда, если ты ошибку не выводишь?
12-04 13:05:16.655: D/t1(1722): /storage/sdcard/201311413516.jpg: open failed: EACCES (Permission denied)
12-04 13:07:55.351: W/InputMethodManagerService(990): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@417edb30 attribute=null, token = android.os.BinderProxy@418dfd08
Re: Сохранить изображение из webView
поясняю тебе нужно разрешение <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
У твоего приложения нету прав для того, что бы писать на карту памяти.
"try catch" для того и нужен - что бы понять где ты накосячил...
не пренебрегай выводом ошибок - это очень не хорошо.
У твоего приложения нету прав для того, что бы писать на карту памяти.
"try catch" для того и нужен - что бы понять где ты накосячил...
не пренебрегай выводом ошибок - это очень не хорошо.
Re: Сохранить изображение из webView
а куда вывод ошибок уходит? это лог ведь, где его смотреть?adarash писал(а):поясняю тебе нужно разрешение <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
У твоего приложения нету прав для того, что бы писать на карту памяти.
"try catch" для того и нужен - что бы понять где ты накосячил...
не пренебрегай выводом ошибок - это очень не хорошо.
Re: Сохранить изображение из webView
С выводом разобрался теперь другая проблема). после создания файла. он не может его открыть к сожалению(
подскажите в какую сторону копать
подскажите в какую сторону копать
Re: Сохранить изображение из webView
Ошибки? Логи?
Re: Сохранить изображение из webView
12-04 18:12:18.265: D/dalvikvm(16426): GC_EXTERNAL_ALLOC freed 305K, 51% free 2574K/5191K, external 2457K/2461K, paused 43msWizikTLT писал(а):Ошибки? Логи?
можете объяснить что говорит мое устройство?
Re: Сохранить изображение из webView
Точно не могу сказать - похоже что-то с памятью, может быть ты как то не верно загружаешь изображение и забиваешь всю память.
Re: Сохранить изображение из webView
Файл который создается весит 0 байт. следовательно он неправильно создается.WizikTLT писал(а):Точно не могу сказать - похоже что-то с памятью, может быть ты как то не верно загружаешь изображение и забиваешь всю память.
12-04 18:40:16.578: D/dalvikvm(32737): GC_EXPLICIT freed 302K, 21% free 2104K/2631K, external 408K/517K, paused 32ms
12-04 18:40:16.874: W/PowerManagerService(1489): Timer 0x7->0x3|0x0
12-04 18:40:16.874: I/PowerManagerService(1489): Ulight 7->3|0
12-04 18:40:19.242: D/InputReader(1489): Input event: value=1
12-04 18:40:19.242: I/PowerManagerService(1489): Ulight 3->7|0
12-04 18:40:19.249: I/InputDispatcher(1489): Delivering key to current input target
12-04 18:40:19.531: D/InputReader(1489): Input event: value=0
12-04 18:40:19.531: I/InputDispatcher(1489): Delivering key to current input target
12-04 18:40:21.929: I/InputReader(1489): dispatchTouch::touch event's action is 0
12-04 18:40:21.929: I/InputDispatcher(1489): Delivering touch to current input target
12-04 18:40:22.242: I/InputReader(1489): dispatchTouch::touch event's action is 1
12-04 18:40:22.242: I/InputDispatcher(1489): Delivering touch to current input target
12-04 18:40:22.335: W/InputManagerService(1489): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40715f68
12-04 18:40:25.289: D/dalvikvm(32745): GC_EXPLICIT freed 6K, 15% free 1816K/2115K, external 408K/517K, paused 21ms
как то так
Re: Сохранить изображение из webView
Ну тогда наверно стоит выложить код создания изображения ? =)
Re: Сохранить изображение из webView
ВотWizikTLT писал(а):Ну тогда наверно стоит выложить код создания изображения ? =)
Код: Выделить всё
public class MainActivity extends Activity {
WebView webView1;
final int MENU_SAVE_ID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView1 = (WebView)findViewById(R.id.webView1);
//отсюда грузим картинку
webView1.loadUrl("http://moloca.ucoz.net/main_256.jpg");
}
// а здесь собственно вся магия
private String SavePicture (WebView webView1) {
OutputStream fOut = null;
Time time = new Time();
time.setToNow();
String folderToSave = Environment.getExternalStorageDirectory().toString();
try {
File file = new File(folderToSave, Integer.toString(time.year) + Integer.toString(time.month) + Integer.toString(time.monthDay) + Integer.toString(time.hour) + Integer.toString(time.minute) + Integer.toString(time.second) +".jpg"); // создать уникальное имя для файла основываясь на дате сохранения
fOut = new FileOutputStream(file);
Bitmap bitmap = (Bitmap) webView1.getDrawingCache();
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); // сохранять картинку в jpeg-формате с 85% сжатия.
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); // регистрация в фотоальбоме
}
catch (Exception e){
return e.getMessage();
}
return "";
}
Re: Сохранить изображение из webView
Возможно проблема в этом месте - Bitmap bitmap = (Bitmap) webView1.getDrawingCache();Nik писал(а):ВотWizikTLT писал(а):Ну тогда наверно стоит выложить код создания изображения ? =)Код: Выделить всё
public class MainActivity extends Activity { WebView webView1; final int MENU_SAVE_ID = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webView1 = (WebView)findViewById(R.id.webView1); //отсюда грузим картинку webView1.loadUrl("http://moloca.ucoz.net/main_256.jpg"); } // а здесь собственно вся магия private String SavePicture (WebView webView1) { OutputStream fOut = null; Time time = new Time(); time.setToNow(); String folderToSave = Environment.getExternalStorageDirectory().toString(); try { File file = new File(folderToSave, Integer.toString(time.year) + Integer.toString(time.month) + Integer.toString(time.monthDay) + Integer.toString(time.hour) + Integer.toString(time.minute) + Integer.toString(time.second) +".jpg"); // создать уникальное имя для файла основываясь на дате сохранения fOut = new FileOutputStream(file); Bitmap bitmap = (Bitmap) webView1.getDrawingCache(); bitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); // сохранять картинку в jpeg-формате с 85% сжатия. fOut.flush(); fOut.close(); MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); // регистрация в фотоальбоме } catch (Exception e){ return e.getMessage(); } return ""; }
потому что копипастил чужой код
а там было вот что Bitmap bitmap = (BitmapDrawable) iv.getDrawable().getBitmap();
НО на эту шляпу еклипс ругался безбожно
Re: Сохранить изображение из webView
если так трудно понимаемо вот проект.
- Вложения
-
- Fon.rar
- (1.23 МБ) 251 скачивание
Re: Сохранить изображение из webView
Код: Выделить всё
private void SavePicture (WebView webView1, String folderToSave) {
Picture picture = webView1.capturePicture();
Time time = new Time();
time.setToNow();
Bitmap b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas( b );
picture.draw( c );
FileOutputStream fos = null;
try
{
File root = Environment.getExternalStorageDirectory();
fos = new FileOutputStream(root+"/"+ Integer.toString(time.year) + Integer.toString(time.month) + Integer.toString(time.monthDay) + Integer.toString(time.hour) + Integer.toString(time.minute) + Integer.toString(time.second) +".jpg");
if ( fos != null )
{
b.compress(Bitmap.CompressFormat.JPEG, 90, fos );
fos.close();
}
}
catch( Exception e )
{
System.out.println("-----error--"+e);
}
}
p.s был занят вот и не отвечал =)
Re: Сохранить изображение из webView
Блин огромаднейшее спасибо тебе решился вопрос)WizikTLT писал(а):Попробуй так - не получится напиши что в лог выводит (при проверке я сохранял не на sdcard, а во внутреннее хранилище - все отлично сохранилось)Код: Выделить всё
private void SavePicture (WebView webView1, String folderToSave) { Picture picture = webView1.capturePicture(); Time time = new Time(); time.setToNow(); Bitmap b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas( b ); picture.draw( c ); FileOutputStream fos = null; try { File root = Environment.getExternalStorageDirectory(); fos = new FileOutputStream(root+"/"+ Integer.toString(time.year) + Integer.toString(time.month) + Integer.toString(time.monthDay) + Integer.toString(time.hour) + Integer.toString(time.minute) + Integer.toString(time.second) +".jpg"); if ( fos != null ) { b.compress(Bitmap.CompressFormat.JPEG, 90, fos ); fos.close(); } } catch( Exception e ) { System.out.println("-----error--"+e); } }
p.s был занят вот и не отвечал =)
Re: Сохранить изображение из webView
а можно еще вопрос по коду?WizikTLT писал(а):Попробуй так - не получится напиши что в лог выводит (при проверке я сохранял не на sdcard, а во внутреннее хранилище - все отлично сохранилось)Код: Выделить всё
private void SavePicture (WebView webView1, String folderToSave) { Picture picture = webView1.capturePicture(); Time time = new Time(); time.setToNow(); Bitmap b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas( b ); picture.draw( c ); FileOutputStream fos = null; try { File root = Environment.getExternalStorageDirectory(); fos = new FileOutputStream(root+"/"+ Integer.toString(time.year) + Integer.toString(time.month) + Integer.toString(time.monthDay) + Integer.toString(time.hour) + Integer.toString(time.minute) + Integer.toString(time.second) +".jpg"); if ( fos != null ) { b.compress(Bitmap.CompressFormat.JPEG, 90, fos ); fos.close(); } } catch( Exception e ) { System.out.println("-----error--"+e); } }
p.s был занят вот и не отвечал =)
Код: Выделить всё
Picture picture = webView1.capturePicture();