在现代互联网社会中,图片已经成为了网页中不可或缺的重要元素,而数据库中存储的图片则是通常在网页中使用的图片之一。然而,由于数据库的数据存储方式与普通文件存储方式的不同,获取数据库中的图片URL路径相对来说会比较复杂。本文将介绍,从而在网页中使用这些图片。
一、了解数据库中存储的图片类型
在数据库中存储图片时,我们需要了解图片类型,以便于我们能够更好地获取图片URL路径,并在网页中使用这些图片。目前常用的图片类型有两种,一种是二进制数据类型,另一种是BLOB类型。二进制数据类型是指将图片直接以二进制数据的形式存储在数据库中,而BLOB类型则是在数据库中存储图片的路径。因此,当我们要获取数据库中的图片URL路径时,需要先判断数据库中存储的图片是哪种类型,然后根据不同类型来获取图片URL路径。
二、获取二进制数据类型图片的URL路径
当数据库中存储的图片是二进制数据类型时,我们需要通过一系列步骤来获取图片URL路径。我们需要通过SQL查询将二进制数据类型图片从数据库中读取出来,然后将其写入到一个本地图片文件中。接着,我们需要通过服务器的文件系统访问这个本地图片文件。我们将该本地图片文件的URL路径返回给网页,这样网页就可以使用这个URL路径来获取图片了。下面是实现这个过程的代码示例:
“`python
import base64
import os
def get_image_url_from_binary_data(data):
# 将二进制数据写入到本地图片文件中
with open(‘image.png’, ‘wb’) as f:
f.write(data)
# 获取本地图片文件的URL路径
url = ‘http://localhost:8000/image.png’
return url
“`
三、获取BLOB类型图片的URL路径
当数据库中存储的图片是BLOB类型时,我们可以直接通过该图片在服务器上存储的路径来获取图片URL路径。具体而言,我们需要将该图片的路径以及服务器上图片存储的主机名和端口号拼接起来,形成完整的URL路径。下面是实现这个过程的代码示例:
“`python
def get_image_url_from_blob_data(data):
# 获取服务器上存储该图片的路径
path = ‘/path/to/image.png’
# 获取服务器主机名和端口号
host = ‘localhost’
port = 8000
# 拼接完整的URL路径
url = ‘http://{0}:{1}{2}’.format(host, port, path)
return url
“`
综上所述,获取数据库中图片的URL路径需要根据不同的图片类型采取不同的方法。如果是二进制数据类型的图片,则需要将其写入到本地图片文件中,然后获取该本地图片文件的URL路径;如果是BLOB类型的图片,则需要根据图片在服务器上存储的路径以及服务器的主机名和端口号来拼接完整的URL路径。获取到这些URL路径后,我们就可以在网页中使用这些图片了。
相关问题拓展阅读:
PHP如何读取数据库图片路径显示出来,如何控制图片的大小?
取出数据库保存的路径$url
<img src="” align=”center”>” width=”图片宽度” height=”图片高度”>
取出数据库保存的路径$url
<img src="” align=”center”>” width=”图片宽度” height=”图片高度”> 但要先构架
图片处理方案:
1首先上传原图片,
2使用GD创建图片的缩略图,
3将原图和缩略图文件的相对路径存入数据库,
4使用图片的时候将路径从数据库中取出,就可以显示在页面了.
android怎么从sd卡指定的文件夹中获取所有图片的路径URL,谢谢~感谢各位大神了
直接调用文件管理器选择图片即可。
1、调用系统提供的图片选择器,代码如下:
//注意,在Android4.4系统下建议使用 Intent.ACTION_OPEN_DOCUMENT方式
if (Utility.isKK()) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(“image
public static String getDataColumn(Context context, Uri uri, String selection,
String selectionArgs) {
Cursor cursor = null;
final String column = “_data”;
final String projection = {
column
};
处理返回结果:
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case
case PIC_RESULT_KK:
imageFileUri = intent.getData();//获取选择图片的URI
break;
}
}
2、除此自外,系统还提供一种选择器,这个图片选择器可以屏蔽掉那个auto backup的目录.所以就开始打算用这个图片选择器来选图片了.
Intent intent=new Intent(Intent.ACTION_GET_CONTENT);//ACTION_OPEN_DOCUMENT
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(“image/jpeg”);
if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.KITKAT){
startActivityForResult(intent, SELECT_PIC_KITKAT);
}else{
startActivityForResult(intent, SELECT_PIC);
}
为什么要分开不同版本呢?其实在4.3或以下可以直接用ACTION_GET_CONTENT的,在4.4或以上,官方建议用ACTION_OPEN_DOCUMENT,主要区别是他们返回的Uri.4.3返回的是带文件路径的,而4.4返回的却是
参考:Android 4.4从图库选择图片,获取图片路径并裁剪
public static String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
// DocumentProvider
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
// ExternalStorageProvider
if (isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String split = docId.split(“:”);
final String type = split;
if (“primary”.equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + “/” + split;
}
// TODO handle non-primary volumes
}
// DownloadsProvider
else if (isDownloadsDocument(uri)) {
final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse(” Long.valueOf(id));
return getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String split = docId.split(“:”);
final String type = split;
Uri contentUri = null;
if (“image”.equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if (“video”.equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if (“audio”.equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
final String selection = “_id=?”;
final String selectionArgs = new String {
split
};
return getDataColumn(context, contentUri, selection, selectionArgs);
}
}
// MediaStore (and general)
else if (“content”.equalsIgnoreCase(uri.getScheme())) {
// Return the remote address
if (isGooglePhotosUri(uri))
return uri.getLastPathSegment();
return getDataColumn(context, uri, null, null);
}
// File
else if (“file”.equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}
public static String getDataColumn(Context context, Uri uri, String selection,
String selectionArgs) {
Cursor cursor = null;
final String column = “_data”;
final String projection = {
column
};
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
null);
if (cursor != null && cursor.moveToFirst()) {
final int index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(index);
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}
public static boolean isExternalStorageDocument(Uri uri) {
return “com.android.externalstorage.documents”.equals(uri.getAuthority());
}
public static boolean isDownloadsDocument(Uri uri) {
return “com.android.providers.downloads.documents”.equals(uri.getAuthority());
}
public static boolean isMediaDocument(Uri uri) {
return “com.android.providers.media.documents”.equals(uri.getAuthority());
}
public static boolean isGooglePhotosUri(Uri uri) {
return “com.google.android.apps.photos.content”.equals(uri.getAuthority());
}
关于数据库url怎么获取图片路径的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。